Java Web App
WEB-INF -> web.xml (배포기술자 Servlet 3.0이상에선 어노테이션을 사용)
- lib ---- jar 파일들
- classes ---- java package, class
Servlet이란?
- 자바 웹 어플리케이션의 구성요소 중 동적인 처리를 하는 프로그램
- WAS에서 동작하는 Java Class
- HttpServlet Class를 상속받는다.
- 웹페이지(Front)부분은 JSP로 표현하고 Logic부분은 Servlet으로 구현하는게 좋다.
Servlet 작성법
- web.xml을 사용하지 않는다.
- 자바 어노테이션을 사용한다.
- 3.0이하에선 web.xml에 등록한다.
Servlet의 라이플 사이클
- 생성자 호출 -> init -> Service -> (작업 ) -> destroy
- 실제 요청된 객체가 메모리에 있는지 없는지만 체크후 있으면 service를 호출한다.
- destroy()는 Servlet이 서버에서 수정이되는경우 호출되며 메모리에서 servlet객체를 삭제한다
WAS는 서블릿 요청을 받으면 해당 서블릿이 메모리에 있는지 확인한다.
if("메모리에 없음"){ 해당 서블릿 클래스를 메모리에 올린다 init() 메소드를 실행 } service() 메소드 실행 /* WAS가 종료되거나, 웹 어플리케이션이 갱신되면 destroy() 메소드를 실행한다. */
service(request,response)
HttpServlet의 service 메소드는 템플릿 메소드 패턴으로 구현- 클라이언트의 요청이 GET이라면 doGet
- POST라면 doPost
HttpServletRequest, Response
- WAS는 웹브라우저로부터 Servlet 요청을 받으면,
요청할 때 가지고 있는 정보를 HttpServletRequest 객체를 생성하여 저장한다.- 응답을 보낼때 사용하기 위하여 Response객체를 생성
- 생성된 Request,Response 객체를 서블릿에 전달
웹브라우저 <-> WAS <-> 웹어플리케이션(서블릿)
HttpServletRequest
- http프로토콜의 request정보를 서블릿에 전달하기 위한 목적으로 사용.
- 헤더정보,파라미터,쿠키,URI,URL등의 정보를 읽어 들이는 메소드를 서블릿에게 전달
- 서블릿은 해당 객체를 이용하여 contentType, 응답코드, 응답 메세지를 전송할 수 있다.