
지난 포스트를 통해서 서블릿의 동작을 실제로 살펴봤습니다. 그 과정에서 서블릿 동작하는 세 가지 주요 기능을 그림으로 나타내면 다음과 같습니다.
클라이언트로부터 요청을 받습니다. 동작 과정에서 받았듯이 웹 서버가 요청을 WAS(톰캣 컨테이너)로 위임을 하고, WAS가 서블릿을 호출하게 됩니다.
DB 연동과 같은 비지니스 로직 등을 처리합니다.
처리된 결과를 클라이언트로 응답합니다. 마찬가지로 서블릿의 결과를 WAS -> 웹 서버를 통해 웹 서버가 클라이언트로 응답을 보냅니다.
서블릿은 클라이언트의 요청과 응답을 처리하기 위해 API를 제공하고 있습니다.
서블릿에서 요청, 응답에 대한 기능을 제공하는 API는 jakarta.servlet.http 패키지에 들어있습니다.
원래는
javax.servlet.http패키지였으나 이클립스 재단에서 Java EE를 인수한 후 20년도에 패키지 명이jakarta.servlet.http로 변경되었습니다.
jakarta.servlet.http.HttpServletRequestjakarta.servlet.http.HttpServletResponse이 API는 doXxxxx() 메소드의 매개변수로 사용되었던 것 기억하시나요?
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
System.out.println("doGet() method called");
}
클라이언트에서 요청을 받으면 요청에 대한 HttpServletRequest 객체, 응답에 대한 HttpServletResponse 객체를 생성하고 doXxxxx() 메소드 호출 과정에서 두 객체를 파라미터로 전달하게 됩니다.
HttpServletRequest, HttpServletResponse에서 제공하고 있는 주요 메소드들을 정리해봤습니다. 지금은 주요 메소드들의 대략적인 생김새와 기능 설명만을 확인해보고 추후에 몇 가지 실습을 통해서 더 자세히 알아보도록 하겠습니다.
| 메소드 | 설명 |
|---|---|
boolean authenticate(HttpServletResponse resp) | 현재 요청한 사용자가 ServletContext 객체에 대한 인증을 하기 위한 컨테이너 로그인 매커니즘을 사용 |
String changeSessionId() | 현재 요청과 관련된 현재 세션의 id를 변경하여 새로운 세션 id 반환 |
String getContextPath() | 요청 콘텍스트를 가리키는 URI 반환 |
Cookie[] getCookies() | 클라이언트가 현재 요청과 함께 보낸 쿠키 객체 배열 반환 |
String getHeader(String name) | 특정 요청에 대한 헤더 정보를 문자열로 반환 |
Enumeration<String> getHeaderNames() | 현재 요청 헤더의 name 속성을 Enumeration 반환 |
String getMethod() | 현재 요청이 어떤 HTTP 요청 메소드인지 반환 |
String getRequestURI() | 요청 URL의 콘텍스트명과 파일 경로 반환 |
String getServletPath() | 요청 URL에서 서블릿 또는 JSP 이름 반환 |
HttpSession getSession() | 현재 요청과 연관된 세션 반환. 이때 세션이 없으면 새로 만들고 반환 |
전체 메소드는 공식 문서에서 확인하실 수 있습니다.
| 메소드 | 설명 |
|---|---|
void addCookie(Cookie cookie) | 응답에 쿠키 삽입 |
void addHeader(String name, String value) | name, value를 헤더에 추가 |
String encodeURL(String url) | 쿠키를 지원하지 않는 클라이언트일 때 세션 id를 포함한 특정 URL 인코딩 |
Collection<String> getHeaderNames() | 현재 응답의 헤더에 포함된 name들 취득 |
void sendRedirect(String location) | 클라이언트에게 리다이렉트 응답을 보내고 지정한 location(URL)로 요청하도록 함 |
String getPathInfo() | 클라이언트가 요청 시 보낸 URL과 관련된 추가 경로 정보 반환 |
전체 메소드는 공식 문서에서 확인하실 수 있습니다.