HTTP Servlet

 

HTTP Servlet

 

HttpServlet 클래스는 HTTP 서블릿을 생성할 수 있도록 기능을 제공해 주는 추상클래스입니다. HTTP 서블릿은 일반적으로 웹 클라이언트로부터 온 요청을 받아서 처리하고, 그 결과를 다시 웹 클라이언트에게 되돌려 주는 작업을 수행합니다. 따라서, 이와 같은 작업을 하기 위해 HttpServlet 클래스를 상속하는 하위클래스를 작성할 때는 다음의 메소드 중 하나를 반드시 재정해 주어야 합니다.

 

   doGet 메소드: 서블릿이 HTTP GET 요청을 처리하기 위해서 재정의합니다.

   doPost 메소드: 서블릿이 HTTP POST 요청을 처리하기 위해서 재정의합니다.

   doPut 메소드: 서블릿이 HTTP PUT 요청을 처리하기 위해서 재정의합니다.

   doDelete 메소드: 서블릿이 HTTP DELETE 요청을 처리하기 위해서 재정의합니다.

   init와 destroy 메소드: 서블릿이 자원을 할당하여 사용할 경우, 자원의 할당을 위해 init

                                     메소드를   정의하고,  이 때 반드시 destroy 메소드를 재정의 함

                                    으로써 할당한 자원을  반납하도록 해야 합니다.

   getServletInfo: 서블릿 자신에 대한 정보를 제공하기 위해 재정의합니다.

HttpServletRequest 인터페이스

ServletRequest 인터페이스를 확장하는 HttpServletRequest 인터페이스는 HTTP 방식을 사용하는 HTTP 서블릿에 정보를 전달하기 위한 추가적인 기능을 제공해 주고 있습니다. 서블릿 엔진은 클라이언트로부터 HTTP프로토콜을 사용하여 전달된 정보를 HttpServlet의 service 메소드에 전달하기 위해 HttpServletRequest 객체를 생성합니다. HttpServletRequest 인터페이스는 이렇게 HTTP 서블릿에게 클라이언트로부터 온 정보를 전달하기 위해 필요한 기능들을 제공해 주고 있고, 이 기능들을 살펴보면 다음과 같습니다.

java.lang.String getAuthType(): 서버에서 사용하는 인증 방법(authentication scheme)의 이름을 얻습니다. 예를 들면, “BASIC” 또는 “SSL” 등이 있습니다.

 

Cookie[] getCookies(): 브라우저에서 이 요청을 통해 보낸 모든 쿠키 객체에 대한 배열을 얻습니다.

 

long getDateHeader(java.lang.String name): 주어진 이름의 요청 헤더의 값을 Date 객체를 표현하는 long 형 값으로 얻습니다.

 

java.lang.String getHeader(java.lang.String name): 주어진 이름의 요청 헤더의 값을 문자열로 얻습니다.

 

 java.util.Enumeration getHeaderNames(): 요청 헤더의 모든 이름에 대한 Enumeration 객체를 얻습니다.

 

int getIntHeader(java.lang.String name): 주어진 이름의 요청 헤더의 값을 정수값으로 얻습니다.

 

 java.lang.String getMethod(): GET, POST, PUT, DELETE 등과 같은 요청 메소드(request method)를 얻습니다.

 

 java.lang.String getPathInfo(): 클라이언트가 보낸 URL과 연관된 추가 경로 정보를 얻습니다.

 

 java.lang.String getPathTranslated(): servlet 이후부터 쿼리 문자열(query string) 이전 까지의 추가 경로 정보를 얻어, 실제 경로로 변환한 경로명을 얻습니다.

 

java.lang.String getQueryString(): 이 요펑에 포함되어 있는 쿼리 문자열을 얻습니다.

 

 java.lang.String getRemoteUser(): 만약, 사용자가 HTTP 인증(authentication)을 통해 로그인 했을 경우, 이 요청을 만든 사용자의 이름을 얻습니다.

 

 java.lang.String getRequestedSessionId(): 클라이언트에 의해 주어진 세션(session) ID를 얻습니다.

 

java.lang.String getRequestURI(): HTTP 요청의 첫줄에 있는 URL 중 프로토콜부터 쿼리 문자열까지의 부분을 얻습니다.

 

 java.lang.String getServletPath(): URL 중 서블릿 호출을 위한 부분을 얻습니다.

 

 HttpSession getSession(): 이 요청과 관련된 현재 세션을 얻습니다. 만약 세션이 없을 경우, 새롭게 생성합니다.

 

HttpSession getSession(boolean create): 이 요청과 관련된 현재 세션을 얻습니다. 만약 세션이 없을 경우, create 값에 따라 생성 여부를 결정합니다.

 

boolean isRequestedSessionIdFromCookie(): 주어진 세션 ID가 쿠키에 대한 것인지를 얻습니다.

 

boolean isRequestedSessionIdFromUrl(): 자바 서블릿 API 2.1에서부터는 isRequestedSessionIdFromURL() 메소드로 바뀌었습니다.

 

 boolean isRequestedSessionIdFromURL(): 주어진 세션 ID가 URL의 부분에 대한 것인지를 얻습니다.

 

boolean isRequestedSessionIdValid(): 요청이 HttpSessionContext의 객체인 현재 세션 컨텍스트 내에 유효한 세션을 가지고 있는지를 얻습니다

 

 

 

HttpServletResponse 인터페이스

 

웹 서버에서 실행되고 있는 HTTP 서블릿이 클라이언트의 요청을 받아 처리하고 그 결과를 HTTP를 이용하여 클라이언트에게 되돌려 주기 위해 HttpServletResponse 객체를 이용합니다. HttpServletResponse 인터페이스는 서블릿의 service 메소드가 HTTP 헤더를 적당하게 설정할 수 있도록 해 주고, 클라이언트에게 데이터를 되돌려 줄 수 있도록 해 줍니다. 따라서, HTTP 서블릿과 클라이언트 사이를 중재하는 서블릿 엔진은 HttpServletResponse 인터페이스를 구현해 주어야 하며, HttpServletResponse 인터페이스가 정의하고 있는 기능을 살펴보면, 다음과 같습니다

 

void addCookie(Cookie cookie): 주어진 쿠키를 응답에 추가합니다.

 

boolean containsHeader(java.lang.String name): 응답 메시지 헤더에 주어진 이름의 항목이 있는지를 얻습니다.

 

java.lang.String encodeRedirectUrl(java.lang.String url): encodeRedirectURL(String url) 메소드로 바뀌었습니다.

 

java.lang.String encodeRedirectURL(java.lang.String url): 주어진 URL을 sendRedirect 메소드 내에서 사용하기 위해 인코딩합니다.

 

java.lang.String encodeUrl(java.lang.String url): encodeURL(String url) 메소드로 바뀌었습니다.

 

java.lang.String encodeURL(java.lang.String url): 주어진 URL에 세션 ID를 포함하여 인코딩합니다.

 

void sendError(int sc): 주어진 상태코드와 그 코드에 해당하는 디폴트 메시지를 사용하여 클라이언트에게 에러를 응답합니다.

 

 void sendError(int sc, java.lang.String msg): 주어진 상태코드와 메시지를 사용하여 클라이언트에게 에러를 응답합니다.

 

 void sendRedirect(java.lang.String location): 응답을 주어진 URL로 리다이렉트 하도록 합니다.

 

 void setDateHeader(java.lang.String name, long date): 주어진 이름과 날자를 갖도록 항목을 추가합니다.

 

void setHeader(java.lang.String name, java.lang.String value): 주어진 이름과 값을 갖도록 항목을 추가합니다.

 

 void setIntHeader(java.lang.String name, int value): 주어진 이름과 정수값을 갖도록 항목을 추가합니다.

 

void setStatus(int sc): 이 응답에 대한 상태코드를 설정합니다.

 

void setStatus(int sc, java.lang.String sm): 이 응답에 대한 주어진 상태코드와 메시지를 설정합니다