Servlet 생명주기
HttpServlet의 3가지 메소드 오버라이딩
- init()
- service(request, response)
- destroy()
Servlet 의 생성 순서
객체 생성 → init() → Service → Service / destroy
WAS는 서블릿 요청을 받으면 해당 서블릿이 메모리에 있는지 확인 → 메모리에 없다면, 메모리에 올리는 작업을 실행 = 객체 생성
Service()
- 요청이 들어왔을 때 응답해야하는 모든 메서드들은
service()
에 구현되어야 함
- HttpServlet의 service 메소드는 템플릿 메소드 패턴으로 구현되어 있음
- 클라이언트 요청이 GET일 경우, 자신이 가지고 있는
doGet()
메소드를 호출
- 클라이언트 요청이 POST일 경우, 자신이 가지고 있는
doPost()
메소드를 호출
destroy()
- WAS가 종료되거나 새롭게 갱신되었을 때만 호출됨
HttpServletRequest & HttpServletResponse
WAS는 웹 브라우저로부터 Servlet 요청을 받으면
- 요청할 때 가지고 있는 정보를 HttpServletRequest 객체를 생성하여 저장
- 웹 브라우저에 응답을 보낼 때 사용하기 위하여 HttpServletResponse 객체를 생성
- 생성된 HttpServletRequest, HttpServletResponse 객체를 서블릿에게 전달
service()
, doGet()
, doPost()
와 같은 메서드에 파리미터로 전달됨
HttpServletRequest
- http 프로토콜의 request 정보를 서블릿에게 전달하기 위한 목적으로 사용
- 헤더 정보, 파라미터, 쿠키, URI, URL 등의 정보를 읽어 들이는 메소드를 가지고 있음
- Request Body의 Stream을 읽어들이는 메소드를 가지고 있음
HttpServletResponse
- WAS는 어떤 클라이언트가 요청을 보냈는지 알고, 해당 클라이언트에게 응답을 보내기 위한 HttpServletResponse 객체를 생성하여 서블릿에게 전달
- 서블릿은 해당 객체를 이용하여 content type, 응답코드, 응답 메시지를 전송함
헤더 정보 읽어 들이기
** 웹 브라우저가 요청정보에 담아서 보내는 header 값을 읽어 들여 브라우저 화면에 출력
- 요청으로 들어온 request 파라미터 이용하여 헤더 정보 파악
- getHeaderNames() : 모든 헤더 이름을 문자열(Enumeration)으로 반환
- getHeader(headername) : 헤더 값 정보를 알 수있음
파라미터 읽어 들이기
** URL 주소의 파라미터 정보를읽어서 브라우저 화면에 출력
⇒ URL : http:// localhost:8080/firstweb/param?name=yewon&age=23
- request 파라미터를 이용하여 parameter 값을 가져옴
- getParmaeter(name) 메서드 이용
그외의 요청정보 출력
** URL, URI, PATH, Remote host 등 정보 출력