WEB
Servlet 구조 분석(7) - HttpServletResponse
긍.응.성
2020. 4. 19. 16:52
반응형
Servlet 구조 분석(6) - HttpServletRequest에 이어 HttpServletResponse에 대해 알아보았습니다.
9. Interface HttpServletResponse
ServletResponse의 sub-interface이다. HttpServletRequest와 같이 서블릿 컨테이너가 HttpServletResponse를 생성 후, service 메서드(doGet, doPost)의 인자로 전달한다.
ServletResponse와 차이점은 아래와 같다
분류 | ServletResponse | HttpServletResponse |
패키지 | javax.servlet | javax.servlet.http |
상속 | - | ServletResponse의 sub-interface |
함께 사용되는 클래스 | GenereicServlet | HttpServlet |
Usage | getWriter() |
ServletResponse의 모든 기능 상속 encodeURL(), sendRedirect() 추가 |
프로토콜 | Protocol independent | HTTP Protocol |
HTTP가 사용되지 않을 적, Web Conainer는 클라이언트로 부터 온 요청을 ServletResponse를 통해 전달했다 | HTTP 등장이후 Web Conainer는 HttpServletResponse를 사용하였다 |
package javax.servlet.http;
...
public interface HttpServletResponse extends ServletResponse {
int SC_CONTINUE = 100;
int SC_SWITCHING_PROTOCOLS = 101;
int SC_OK = 200;
int SC_CREATED = 201;
int SC_ACCEPTED = 202;
int SC_NON_AUTHORITATIVE_INFORMATION = 203;
int SC_NO_CONTENT = 204;
int SC_RESET_CONTENT = 205;
int SC_PARTIAL_CONTENT = 206;
int SC_MULTIPLE_CHOICES = 300;
int SC_MOVED_PERMANENTLY = 301;
int SC_MOVED_TEMPORARILY = 302;
int SC_FOUND = 302;
int SC_SEE_OTHER = 303;
int SC_NOT_MODIFIED = 304;
int SC_USE_PROXY = 305;
int SC_TEMPORARY_REDIRECT = 307;
int SC_BAD_REQUEST = 400;
int SC_UNAUTHORIZED = 401;
int SC_PAYMENT_REQUIRED = 402;
int SC_FORBIDDEN = 403;
int SC_NOT_FOUND = 404;
int SC_METHOD_NOT_ALLOWED = 405;
int SC_NOT_ACCEPTABLE = 406;
int SC_PROXY_AUTHENTICATION_REQUIRED = 407;
int SC_REQUEST_TIMEOUT = 408;
int SC_CONFLICT = 409;
int SC_GONE = 410;
int SC_LENGTH_REQUIRED = 411;
int SC_PRECONDITION_FAILED = 412;
int SC_REQUEST_ENTITY_TOO_LARGE = 413;
int SC_REQUEST_URI_TOO_LONG = 414;
int SC_UNSUPPORTED_MEDIA_TYPE = 415;
int SC_REQUESTED_RANGE_NOT_SATISFIABLE = 416;
int SC_EXPECTATION_FAILED = 417;
int SC_INTERNAL_SERVER_ERROR = 500;
int SC_NOT_IMPLEMENTED = 501;
int SC_BAD_GATEWAY = 502;
int SC_SERVICE_UNAVAILABLE = 503;
int SC_GATEWAY_TIMEOUT = 504;
int SC_HTTP_VERSION_NOT_SUPPORTED = 505;
// HTTP Status Code
void addCookie(Cookie cookie);
// 응답에 쿠키를 추가한다
// 여러번 호출하여 두 개 이상의 쿠키를 추가할 수 있다
boolean containsHeader(String name);
// name에 해당하는 header가 존재하는지 여부를 반환한다
String encodeURL(String url);
// sessionID를 포함하여 URL을 인코딩한다
// 인코딩이 필요하지 않다면 url 변경은 일어나지 않는다
String encodeRedirectURL(String url);
// sendRedirect 메서드를 위해 URL을 인코딩한다
// encodeURL과 같이 인코딩이 필요하지 않다면 변경은 일어나지 않는다
/** @deprecated */
@Deprecated
String encodeUrl(String var1);
/** @deprecated */
@Deprecated
String encodeRedirectUrl(String var1);
void sendError(int sc, String msg) throws IOException;
// 응답에 sc로 statusCode를 세팅하고 에러 응답을 전송하고 버퍼를 비운다.
// statusCode 에 맞는 error-page declaration이 설정되어 있다면, msg는 무시된다
void sendError(int sc) throws IOException;
// sc로 statusCode를 변경 후 에러 응답을 전송하고 버퍼를 비운다.
void sendRedirect(String location) throws IOException;
// redirect location URL로 리다이렉트하고 버퍼를 비운다.
// StatusCode는 302 Found로 적용된다
void setDateHeader(String name, long date);
// 응답헤더 name에 date값을 설정한다
// 이미 존재한다면 새로운 date 값이 적용된다
void addDateHeader(String name, long date);
// setDateHeader와 비슷하지만 multiple values 지원
void setHeader(String name, String value);
// 응답헤더 name에 value를 설정한다. 덮어쓴다
void addHeader(String name, String value);
// setHeader와 같지만 multiple values 지원
void setIntHeader(String name, int value);
// setHeader와 같지만 값이 int형이다
void addIntHeader(String name, int value);
// setIntHeader의 multiple values 지원형
void setStatus(int cs);
// 응답에 status code를 설정한다
/** @deprecated */
@Deprecated
void setStatus(int var1, String var2);
int getStatus();
// 응답의 status code를 반환한다
String getHeader(String name);
// name에 해당하는 header 값을 반환한다
Collection<String> getHeaders(String name);
// name에 해당하는 응답 헤더값에 대한 collection을 반환한다
Collection<String> getHeaderNames();
// 응답 헤더의 name에 대한 Collection을 반환한다
default void setTrailerFields(Supplier<Map<String, String>> supplier) {
}
default Supplier<Map<String, String>> getTrailerFields() {
return null;
}
}
※ 참고자료
반응형