개발/JAVA

[Servlet] 서블릿 및 JSP 요약 정리

TutleKing 2022. 10. 31. 23:53

Servlet 개념 

  • 웹서버 : 정적인 웹 컨텐츠를 처리하는 서버
  • 동적 웹 컨텐츠를 처리하기 위해 사용하는 방법 : CGI 
  • CGI 가 Java 에서 사용하기 불편하고 CGI의 특성(프로세스를 만들었다 죽임) 때문에 Servlet 사용
  • Servlet은 spec(API) 이고 servlet을 생애주기에 맞춰 실행시켜주는 것이 Servlet Container이다.
  • Servlet Container = Tomcat = Web Application Server 
  • Proxy

 

Servlet 구현 

  • Servlet 생애주기 : init -> service -> destroy
  • service() 메서드는 굳이 override 할 필요 없음 : doGET(), doPost() 로 사용 
  • doGET()
  • ServletContext
  • ServletRequest -> HttpServletRequest
  • ServletResponse -> HttpServletResponse

web.xml

  • 웹 어플리케이션의 배치 정보를 담고있는 XML 파일 
  • servlet 태그 : 서블릿 이름, init-param, load-on-startup 지정
  • servlet-mapping 태그 : servlet 과 URL 맵핑 정보 (경로에 와일드 카드 * 지정가능)
  • context-param : ServletContext의 초기 파라미터 
  • welcome-file-list , error-page , filter, filter-mapping, listener

 

Cookie

  • 사용자가 웹사이트를 방문할때 웹서버에 의해 생성되어 브라우저에 저장되는 데이터 블록 
  • 쿠키를 다 읽어올수는 있지만 어떤 쿠기가 있는지는 쿠키 이름으로 직접 찾아야함 
  • 쿠키 저장은 response.addCookie를 사용 
  • 도메인 마다 쿠키가 저장되는게 다름 
  • maxAge가 0이면 삭제, 음수면 브라우저 닫으면 삭제(세션)

 

Session

  • 상태가 없는 http 프로토콜상에서 같은 사용자로 부터의 여러 요청을 하나의 상태로 유지시키는 기술
  • 서버에 저장됨 
  • 쿠키에 세션의 ID를 저장시켜 브라우저에서 request 할때 쿠키를 달고 온걸로 ID를 조회해 필요한 데이터를 사용한다. 

 

 

 

 

RequestDispatcher

  • 현재의 요청에대한 정보를 저장했다가 다른 자원으로 전달하는 기능
  • req.getRequestDispatcher({url}) 으로 사용가능 
  • rd. Forward() vs response.sendRedirect()

 

Filter

  • 공통적으로 적용할 수 있는 작업을 수행하는 객체 
  • 필터 체인 형태로 제공 
  • filterChain.doFilter()를 실행 안시키면 의미 없음 

 

Listener

  • ServletContext와 관련된 리스너
  • HttpSession
  • ServletRequest

 

File Upload

  • form 태그에서 enctype 을 multipart/form-data 로 정해주고 사용
  • application/x-www-form-urlencoded는 대용량 바이너리 데이터 전송에 맞지않음
  • multipart/form-data의 컨텐츠는 multipart MIME 데이터의 규칙을 따름
  • MIME의 메세지 바디는 multipart로 구성되어 있음 
  • @MultipartConfig

 

Sevlet3.0 Annotations

  • @WebServlet : name / urlPatterns
  • @WebInitParam : name / value
  • @WebFilter : filtername / urlPatterns
  • @WebListener
  • initializer.webAppInitializer : context-param / welcome-file-list / error page 구현 가능 

 

 

JSP ( = Java Server Pages = Jakarta Server Pages)

  • HTML, XML등을 기반으로 자바코드를 삽입하여 웹서버에서 동적으로 웹페이지를 생성할 수 있도록 해주는 서버 사이드 스크립트 언어
  • 서블릿이라고 생각하면 됨 
  • <%@ %> (directive) : 페이지, 다른 html, jsp , 태그 라이브러리 
  • <%= %> : 출력 
  • <%! %> : 변수 선언 
  • <% %> (scriptlet): 기본 문법 

 

 

JSP 내장 객체 

  • page : page의 서블릿 인스턴스 
  • request : 서블릿-jsp 사이에서 서블릿의 요청(jsp)을 처리하고 결과를 전달해줄 때 사용
  • session 
  • application : ServletContext 

 

JSP action Tag : <jsp:useBean>

 

JSP EL(Expression Language)

  • 자바 빈의 프로퍼티나 컬랙션(자료구조)의 값을 쉽게 꺼낼 수 있게 해주는 표현식
  • ${~~}
  • 검색 범위

 

JSTL(JSP Standard Tag Library)

  • c ,fn , fit, x, sql 등 여러 상황에서 사용

 

 

MVC 패턴

  • 장점
  • MVC 패턴을 써서 servlet을 나눠 만들더라도 공통적인 처리 부분들이 여러곳 생긴다

 

 

FrontServlet

  • 모든 요청을 FrontServlet이 다 받아서 요청 분배도 하고 응답도 처리 서블릿에서 받아 include 해서 사용자한테 응답 
  • 이렇게 FrontServlet이 응답, 요청 다 하면 처리 서블릿이 굳이 서블릿일 필요가 없음
  • Command 패턴을 사용해서 추상화 가능 
  • Command.excute 메서드를 통해서 반환값을 {jsp 파일 이름}으로 주면 굳이 서블릿일. 필요 없는 객체들이 생김  -> Controller라고 칭함 

 

FrontController 패턴

  • 웹 사이트의 모든 요청을 처리하는 컨트롤러 (보안, 국제화 , 뷰 제공 등 )
반응형