Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

Be Coder

Servlet Programming - Servlet API 본문

Servlet Programming - Servlet API

ForzaCoding 2020. 4. 19. 19:36

1. Servlet API 구성

Java Servlet 작성을 위해 제공되는 패키지는 javax.servlet, javax.servlet.http 패키지로 구성된다. 

즉, Serlvet 작성을 위해서는 두 패키지에서 제공되는 클래스와 인터페이스를 이용해야한다.

 

Java Servlet Package

java.servlet 

특정 프로토콜에 종속적이지 않는 Servlet 작성을 위한 클래스와 인터페이스를 제공한다.

Interface : Servlet, ServletRequest, ServletResponse, ServletConfig, ServletContext, RequestDispatcher

Class : ServletInputStream, ServletOutputStream, GenericServlet 

javax.servlet.http

특정 HTTP 프로토콜을 따르는 Servlet 작성에 필요한 클래스와 인터페이스를 제공한다.

Interface : HttpServletRequest, HttpServletResponse, HttpSession

Class : HttpServlet, Cookie, HttpSessionEvent, HttpUtils

 

 

2. Servlet 작성을 위한 기본 Interface, Class

Servlet 상속 구조

 

HttpServlet ( Class ) HTTP Servlet 작성하려면, 이 클래스를 상속받고, 요청에 따라 doGet(), doPost() 메소드 재정의.
HttpServletRequest ( Interface ) HTTP Servlet에서 클라이언트로부터 전달된 요청과 관련된 작업을 할 수 있는 기능 제공.
일반적으로, CGI 환경변수 값 참조, 클라이언트에게 전달받은 매개변수 파싱, 클라이언트에게 전달받은 Cookie 데이터 파싱 작업, HTTP 요청에 대한 헤더 정보 취득. 
HttpServletRequest는 ServletRequest Interface를 상속받고, HttpServlet Class에 의해 상속됌. 
HttpServletResponse ( Interface ) 일반 Servlet에서 클라이언트에게 전달할 응답과 관련된 작업을 하도록 기능 제공.
보통, ServletResponse 객체를 이용해 PrintWriter 객체를 얻고, 결과 페이지 출력하는 작업.
HTTP 응답에 대한 헤더 정보 설정, Cookie 추가도 가능.
HttpServletResponse는 ServletResponse Interface를 상속받고, HttpServlet Class에 의해 사용.

 

* 코드 작성 

1. HttpServlet 클래스 상속.

2. GET, POST 요청 방식에 따라 doGet(request, response), doPost(request, response) 메소드를 반드시 구현.

3. 해당 요청 방식에 맞는 메소드 내에서, 우선 브라우저에 출력하려는 컨텐트 타입을 MIME 타입으로 지정. 

  > response객체의 setContentType(String type)으로 설정. MIME 타입은 web.xml에서 확인 가능.

4. response 객체 생성. 데이터가 문자열이면 response.getWriter(), 바이너리 코드면 response.getOutputStream() 호출. 

5. getWriter() 메소드 호출해서 PrintWriter 스트림 생성 후, 브라우저에 보여줄 HTML 태그 출력.

 

 

 

3. Serlvet 작성에 사용되는 응용 Interface, Class

javax.servlet.ServletConfig Interface ) 일반 Servlet, Http Servlet의 이름, 실행 환경 등 Servlet 구성 정보를 제공.
javax.servlet.ServletContext Interface )

통신을 할 수 있는 기능 제공.

사용 : Servlet Container에 대한 정보 얻기, web.xml에 설정된 초기화 매개변수 값 얻기, Servlet Container의 log 파일에 log 메시지 출력, 같이 실행중인 Servlet 얻기, Servlet의 실제 디렉토리 얻기, RequestDispatcher 객체 얻기(include, forward하기 위한 서버 자원)

javax.servlet.RequestDispatcher Interface ) 동일 Context내에 있는 자원을 사용할 수 있도록, 다른 Servlet의 결과로 생성된 결과 페이지를 include하거나, 다른 Servlet으로 forward 하기 위해 사용.
javax.servlet.http.HttpSession Interface ) 특정 클라이언트와 관련된 상태 정보를 클라이언트가 연결되어 있는 세션 동안 저장하기 위한 저장소 제공. 클라이언트는 자신만의 정보 저장을 위한 각각의 세션을 보유. 
javax.servlet.http.Cookie Class ) 클라이언트에서 전달한 쿠키로부터 데이터를 읽거나, 클라이언트에게 쿠키를 부여하기 위해 사용.