상세 컨텐츠

본문 제목

[Servlet] HttpServletRequest와 HttpServletResponse 객체 생성과 삭제 구조

Backend/JSP & Servlet

by hyeminyy 2023. 11. 28. 21:34

본문

728x90

객체 생성 및 삭제

1. 클라이언트가 웹 브라우저에서 서비스를 요청한다. 이 때 HTTP 프로토콜 기반으로 요청정보가 만들어져 웹서버에 전달된다.

2. 웹서버는 클라이언트로부터 전달받은 요청정보의 URI를 살펴보고, 서블릿이라면 서블릿 컨테이너에 처리를 넘긴다.

3. 서블릿 컨테이너는 요청받은 서블릿 클래스 파일을 찾아서 실행한다.

4. 실행할 때 첫 순서는 최초의 요청인지를 파악한다. 최초의 요청이라면 메모리에 로딩 후 객체를 생성하고 init() 메소드를 호출한다.

5.init() 메소드 실행이 끝난 다음에는 최초의 효청이든지 그렇지 않든지 서블릿 실행 요청이 들어올 때마다 실행되는 작업으로, 서블릿 컨테이너는 HttpServletRequest와 HttpServletResponse 객체를 생성한다. HttpSerbletRequest 객체는 클라이언트로부터 요청받은 정보를 처리할 목적으로 생성하고, HttpSerbletResponse 객체는 클라이언트에게 보내는 응답정보를 처리할 목적으로 생성한다.

6. service() 메소드를 호출한다. 이때, 앞에서 생성한 HttpServletRequest와 HttpServletResponse 객체의 주소를 인자로 넘긴다. service() 메소드에서는 인자로 받은 두 객체를 사용하여 프로그램을 구현한다.

7. service() 메소드가 완료되면 클라이언트에게 응답을 보내고 서버에서 실행되는 프로그램은 완료된다. 이 때, HttpServletRequest와 servletResponse 객체는 소멸된다.

 

꼭 기억 해야할 점 !

 - HttpServletRequest와 HttpServletResponse 객체의 생존 기간 !

 : HttpServletRequest와 HttpServletResponse 객체는 service() 메소드가 실행되기 전에 생성되었다가 끝나면 소멸한다. 

   service() 메소드가 실행되는 동안에만 메모리에 상주하고 있어서 그동안에만 사용할 수 있다.

 

 

응답정보 처리  - HttpServletResponse

interface

ServletResponse   일반적인 네트워크 통신에서의 응답 관련 메소드 제공
HttpServletResponse HTTP 통신 기반의 응답 관련 메소드 확장 제공

 

ServletResponse 인터페이스의 주요 메소드

PrintWriter getWriter() 서비스를 요청한 클라이언트와 서버 간에 연결된 PrintWriter 객체를 생성하여 반환한다.
void setBufferSize(int size) 출력스트림의 버퍼 크기를 설정한다.
void setCharacterEncoding(String charset) 응답정보 인코딩에 사용할 문자를 설정한다.
void setContentType(String type) 응답 정보의 데이터 형식을 설정한다.
void setLocalse 클라이언트가 사용하는 언어, 국가코드 등 클라이언트의 환경을 설정한다.

 

HttpServletReponse 

void  addCookie(Cookie cookie) 인자값으로 주어진 쿠기를 응답 정보의 헤더에 추가한다. 쿠키느느 응답 정보의 Set-Cookie 헤더의 값으로 추가되어 클라이언트로 전송된다.
String encodeRedirectURL(String url) 클라이언트와 서버 간 세션이 유지되는 상태에서 브라우저 쿠기를 원하지 않을 때 주어진 URL 뒤에 세션 아이디를 추가하고 인코딩하여 요청을 재전송한다.
String encodeURL(String url) 주어진 URL에 세션 아이디를 추가하여 인코딩해서 반환한다.
void sendRedirect(String location) 응답을 클라이언트가 요청한 URL이 아니라 sendRedirect()에 주어진 URL로 재전송한다.

 

https://docs.oracle.com/javaee/7/api/index.html?javax/servlet/package-summary.html

 

Java(TM) EE 7 Specification APIs

 

docs.oracle.com

 

 

728x90

관련글 더보기