서블릿 클래스를 작성하기 앞서 서블릿 클래스 관계를 알고 있어야 한다.
HTTP용 서블릿 클래스을 작성할 때는 HttpServlet 클래스를 상속받아 작성합니다. 서블릿 클래스는 다음과 같은 형식을 가집니다.
import javax.servlet.*;
public class HelloClass extends HttpServlet {
클래스 내용
}
HttpServlet 클래스는 서블릿 클래스 중 HTTP 프로토콜에 사용하는 서블릿 클래스입니다.
서블릿은 초기화(init) → 서비스(service) → 소멸(Destroy) 의 단계를 거칩니다. 물론 이 단계는 컨테이너가 결정합니다. 개발자는 초기화할 때 수행해야 동작을 초기화 메소드에 작성하거나, 소멸할 때 수행해야 할 동작을 소멸 메소드에 작성할 수는 있어도 서블릿 클래스를 생성하거나 실행하는 것에 관여 할 수 없습니다.
HttpServlet 클래스는 초기화, 서비스, 소멸에 해당하는 메소드를 이미 구현해 놓은 클래스입니다. 따라서 HttpServlet 클래스를 상속하여 서블릿을 작성할 때는 서블릿의 라이플 사이클에 신경 쓸 필요가 없이 요청에 응답하는 doGet()메소드나 doPost()메소드만 구현하면 됩니다.
HTTP프로토콜에서는 요청 명령어는 기본적으로 7가지가 있으며 확장하면 9가지가 됩니다. 요청 명령어 중 가장 중요한 명령어는 GET명령어와 POST명령어입니다. 이 내용은 웹 프로그래밍>HTTP 프로토콜>HTTP/1.1 Mehod 카테고리에 가시면 확인 할 수 있습니다.
서블릿에서는 매핑을 통해 요청 명령어에 따른 사용할 메소드를 결정합니다. 즉, GET명령어는 doGet()메소드를 호출하고 POST명령어가 전달되면 doPost()메소드를 호출하여 결과를 클라이언트에게 반환합니다.
즉, 서버측 서블릿 클래스를 작성할 때는 서블릿 클래스를 생성한 후 doGet() 메소드와 doPost() 메소드를 구현하여 작성합니다. 보통 doPost() 메소드는 doGet() 메소드를 호출하는 역활을 하게 하며 응답의 결과는 모두 doGet() 메소드안에 작성하는 것이 일반적인 방법입니다.
서블릿 프로로그램 작성 예제
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.*;
public class Hello extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException) {
doGet(request, response);
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Hello</title>");
out.println("<body>");
out.println("Hello");
out.println("</body>");
out.println("</html>");
}
}
위의 예제에서 보듯이 서블릿을 작성할 때 doPost() 메소드를 가장 먼저 작성하며 doPost()메소드는 어떤 동작도 담고 있지 않고 바로 doGet()메소드를 호출합니다. 서블릿을 작성할 때 실질적인 내용은 doGet()메소드에 작성하는 것이 일반적인 방법입니다.
doGet() 메소드를 작성할 때 가장 먼저 해야 할 것은 문서의 ContentType 을 설정하는 것입니다.ContentType은 문서의 타입을 지정하는 것으로 MIME 타임을 지정하며 문서의 문자 encoding 방식도 지정합니다.
설정방법은 response.setContentType("MIME 타입") 메소드에 파라미터로 MIME 타입을 전달하는 것입니다. MIME 타입은 웹프로그래밍>HTTP프로토콜>MIME Type 카테고리에 가시면 확인 할 수 있습니다.
다음은 response.getWriter() 메소드로 PrintWriter 클래스 객체를 얻는 것입니다. PrintWriter 객체는 HTML 문서의 출력을 담당합니다. 기본적은 사용 방법은 다음과 같습니다.
PrintWriter out = response.getWriter();
out.println("<head>");
※ gif나 pdf 문서 같은 바이너리 형식일 경우에는 response.getOutputStream() 메소드를 통해 ServletOutputStream 객체를 사용하여 출력합니다.
'자바(Java) > JAVA 2EE' 카테고리의 다른 글
JSTL이 제공하는 태그의 종류 (0) | 2009.09.09 |
---|---|
커스텀 태그 라이브러리와 JSTL (0) | 2009.09.09 |
web.xml(배포서술자: Deployment Descriptor, 이하 DD)서블릿 매핑 방법 (0) | 2009.08.26 |
서블시의 ServletContext 객체와 같은 JSP의 application 객체 (0) | 2009.08.26 |
페이지 정보를 나타내는 pageContext 객체(javax.servlet.jsp.PageContext) (0) | 2009.08.26 |