서블릿 API에서 요청정보와 응답정보를 다루는 객체는 HttpServletRequest와 HttpServletResponse이다.
HttpServletRequest는 클라이언트가 서버에 보내는 요청정보를 처리하는 객체이고, HttpServletResponse는 서버가 클라이언트로 보내는 응답정보를 처리하는 객체이다.
** HttpServletRequest와 HttpServletResponse 객체는 service() 메소드가 실행되는 동안에만 메모리에 상주하고 있기 때문, 그동안에만 사용할 수 있다.
HttpServletResponse 인터페이스는 우리가 웹 애플리케이셔션을 개발하면서 응답 관련 작업을 수행할 때 사용하는 ServletResponse 인터페이스를 상속한다. 따라서 일반적인 네트워크 통신에서 응답과 관련된 메소드들을 포함하고 있으며, 여기에 HTTP 프로토콜 통신 기반의 응답 관련 메서드들도 확장하여 포함하고 있다.
void addCookie(Cookie cookie) | 인자값으로 주어진 쿠키를 응답정보 헤더에 추가한다. 쿠키는 응답정보의 set-cookie 헤더의 값으로 추가되어 클라이언트로 전송한다.
String encodeRedirectURL(String url) | 클라이언트와 서버 간 세션이 유지되는 상태에서 브라우저 쿠키를 지원하지 않을 때 주어진 URL 뒤에 세션 아이디를 추가하고 인코딩하여 지원한다.
String encodeURL(String url) | 주어진 URL에 세션 아이디를 추가하여 인코딩해서 반환한다.
void sendRedirect(String location) | 응답을 클라이언트가 요청한 URL이 아니라 sendRedirect()에 주어진 URL로 재전송한다. 매개변수 location은 절대 URL이나 상대URL로 지정한다. 이 메소드는 서버의 특정 자원이 다른 URL로 이동할 때 사용할 수 있는 메소드이다.
public void setDateHeader(String name, long date) | 날짜를 밀리 초로 변환하여 주어진 이름과 날짜를 응답정보 헤더에 설정한다.
public void setHeader(String name, String value) | 응답정보의 헤더에 주어진 이름과 값을 설정한다.
public void setIntHeader(String name, int value) | 주어진 이름과 정숫값을 갖도록 응답정보 헤더에 추가한다.
public void setStatus(int sc) | 응답으로 전송될 HTTP 응답에 대한 상태코드를 설정한다.
브라우저에서 URL을 이용하여 웹서버에 서블릿 수행을 요청할 때 아래와 같은 요청정보를 전달한다.
위와 같은 요청정보는 HttpServletRequest 인터페이스의 get 메소드를 통해 추출할 수 있고, HttpServletRequest는 service()나 doGet(), doPost() 메소드의 첫 번째 인자로 전달된다.
클라이언트의 요청 때마다 전달되는 ServletRequest 객체는 아래와 같은 메소드를 이용하여 요청정보를 추출할 수 있다.
Object getAttribute(String name) | ServletRequest 객체 안에 등록된 데이터를 추출하여 반환한다.
Enumeration getAttributeNames() | ServletRequest 객체 안에 등록된 데이터들의 이름 전부를 하나의 Enumeration 객체에 담아서 반환한다.
int getContentLength() | 서비스 요청 시 보낸 요청정보 몸체에 포함된 데이터의 길이를 반환한다, 만약 길이를 알 수 없을ㄷ 때는 -1을 반환한다.
ServletInputStream getInputStream() | 요청정보 몸체로부터 바이너리 데이터를 읽어들이기 위해 한 번에 한 줄씩 읽을 수 있는 ServletInputStream 객체를 반환한다.
String getParameter(String name) | 클라이언트가 보낸 질의 문자열 중에서 인자로 지정된 name과 일치하는 것을 찾아 name, value를 반환한다.
Enumeration <String> getParameterNames() | 클라이언트가 서버로 보낸 질의 문자열들의 이름을 하나의 Enumeration 객체에 담아서 반환한다.
String[] getParameterValues(String name) | 클라이언트가 서버로 보낸 질의 문자열 중에서 인자로 지정된 name 과 일치하는 모든 값을 찾아 하나의 String타입의 배열에 담아 반환한다.
String getProtocol() | 클라이언트가 서버에 서비스를 요청하면서 사용한 프로토콜 정보를 반환한다.
BufferedReader getReader() | 요청정보 몸체로부터 문자 인코딩에 따라 텍스트를 읽어들이기 위한 BufferedReader 객체를 반환한다.
String getRemoteAddr() | 서버에 서비스를 요청한 클라이언트의 IP주소를 반환한다.
String getScheme() | 서비스 요청 시 사용한 http, https 또는 ftp등과 같은 프로토콜 이름을 반환한다.
String getServerName() | 서비스 요청받은 서버의 이름을 반환한다.
int getServerPort() | 클라이언트의 서비스를 요청받은 서버 포트 번호를 반환한다.
ServletContext getServletContext() | 서버가 시작될 때 웹 애플리케이션 단위로 생성된 ServletContext 객체 주소를 추출하여 반환한다.
void removeAttribute(String name) | ServletRequest 객체에 setAttribute(name) 메소드를 이용하여 등록된 데이터를 삭제한다.
void setAttribute(String name, Object o) | 클라이언트의 또 다른 서비스 요청에서도 계속해서 사용하고 싶은 데이터는 서버에 저장해야 하는데, ServletRequest 객체 안에 저장해둔다.
void setCharacterEncoding(String env) | 클라이언트가 요청정보 몸체에 포함해서 보내는 문자열들을 지정된 문자셋을 이용해 인코딩해준다.
String getHeader(String headerName) | HTTP 요청 헤더에 지정된 headerName의 값을 문자열로 반환한다. 만일 HTTP 요청 헤더에 headerName의 값이 없으면 null을 반환한다.
Enumeration getHeaderNames() | HTTP 요청 헤더에 포함된 모든 헤더의 이름을 Enumeration으로 반환한다.
Enumeration getHeaders(String headername) | HTTP 요청 헤더에 포함된 headerName의 모든 값을 Enumeration으로 반환한다.
int getHeader(String headerName) | HTTP 요청 헤더에 포함된 headerName의 값을 int로 반환한다. 지정된 headerName의 값을 int로 변환할 수 없을 때 NumberFormat Exceprion이 발생하고, headerName 헤더가 HTTP 요청 헤더에 없을 때 -1을 반환한다.
long getDateHeader(String headerName) | HTTP 요청 헤더에 포함된 headerName의 값을 밀리초로 변환하여 long으로 반환한다. 지정된 header의 값을 int로 변환할 수 없을 때 IllegalArgumentException이 발생하고, headerName 헤더가 HTTP 요청 헤더에 없을 때 -1을 반환한다.
String getPathInfo() | 클라이언트가 서비스 요청 시 보낸 URL의 뒷부분에 있는 path 정보를 반환한다.
HttpSession getSession() | 서비스를 요청한 클라이언트가 사용하는 HttpSession 객체를 반환한다. 반환할 HttpSession 객체가 없으면 서로 생성하여 반환한다.
HttpSession getSession(boolean create) | 서비스를 요청한 클라이언트가 사용하는 HttpSession 객체를 반환한다. 만일 반환할 HttpSession 객체가 없으면 getSession(true)이면 새로 생성하여 반환하며 getSession(false)이면 HttpSession 객체를 새로 생성하지 않고 null을 반환한다.
Stirng getRequestedSessionId() | 서비스를 요청한 클라이언트가 사용하는 HttpSession ID를 반환한다.
boolean isRequestedSessionIdValid() | 서비스가 요청한 클라이언트가 사용하는 HttpSession 객체가 유효한지 판단한다.
boolean isRequestedSessionIdFromCookie() | 서비스를 요청한 클라이언트가 사용하는 HttpSession의 ID가 쿠키로 전달되면 true, 그렇지 않으면 false 를 반환한다.
boolean isRequestedSessionIdFromURL() | 서비스를 요청한 클라이언트가 사용하는 HttpSession의 ID가 URL에 포함되면 true, 그렇지 않으면 false를 반환한다.
Cookie[] getCookies() | 서비스를 요청받는 서버가 서비스를 요청한 클라이언트에게 이전에 보낸 모든 쿠키를 추출한다.
String getRequestURI() | 클라이언트가 서비스 요청 시 보낸 URL에서 URI 부분만 반환한다.
String getQueryString() | 클라이언트가 GET 방식으로 서버에 보낸 질의 문자열들을 모두 추출하여 반환한다.
String getMethod() | 클라이언트가 서비스를 요청할 때 요청한 방식의 이름을 반환한다.
Stirng getPathTranslated() | 클라이언트가 서비스 요청 시 보낸 URL의 로 정보를 절대경로(path)로 변경하여 반환한다.