지난 포스트를 통해서 서블릿의 동작을 실제로 살펴봤습니다. 그 과정에서 서블릿 동작하는 세 가지 주요 기능을 그림으로 나타내면 다음과 같습니다.
클라이언트로부터 요청을 받습니다. 동작 과정에서 받았듯이 웹 서버가 요청을 WAS(톰캣 컨테이너)로 위임을 하고, WAS가 서블릿을 호출하게 됩니다.
DB 연동과 같은 비지니스 로직 등을 처리합니다.
처리된 결과를 클라이언트로 응답합니다. 마찬가지로 서블릿의 결과를 WAS -> 웹 서버를 통해 웹 서버가 클라이언트로 응답을 보냅니다.
서블릿은 클라이언트의 요청과 응답을 처리하기 위해 API를 제공하고 있습니다.
서블릿에서 요청, 응답에 대한 기능을 제공하는 API는 jakarta.servlet.http
패키지에 들어있습니다.
원래는
javax.servlet.http
패키지였으나 이클립스 재단에서 Java EE를 인수한 후 20년도에 패키지 명이jakarta.servlet.http
로 변경되었습니다.
jakarta.servlet.http.HttpServletRequest
jakarta.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과 관련된 추가 경로 정보 반환 |
전체 메소드는 공식 문서에서 확인하실 수 있습니다.