서블릿 만들기
서블릿 클래스작성
서블릿 클래스는 반드시 javax.servlet.Servlet 인터페이스를 구현해야한다.
서블릿 컨테이너가 서블릿에 대해 호출할 메서드를 정의한 것이 Servlet 인터페이스이다.
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | package com.doubles.webstart; import java.io.IOException; import javax.servlet.Servlet; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; // HelloWorld 서블릿 클래스를 만들기 위해 Servlet인터페이스를 구현 public class HelloWorld implements Servlet{ @Override // 서블릿 컨테이너가 서블릿을 생성한후 초기화 작업을 수행하기 위해 호출하는 메서드 public void init(ServletConfig arg0) throws ServletException { System.out.println("init"); } @Override // 클라이언트의 요청이 있을 때 마다 호출되는 메서드 public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException { System.out.println("service"); } @Override // 서블릿 컨테이너의 종료, 웹 애플리케이션의 정지, 해당 서블릿의 비활성화를 시킬때 호출되는 메서드 public void destroy() { System.out.println("destroy"); } @Override // 서블릿 설정 정보를 다루는 ServletConfig 객체를 반환하는 메서드 public ServletConfig getServletConfig() { System.out.println("getServletConfig"); return null; } @Override // 서블릿을 작성한 사람에 대한 정보, 서블릿 버전, 권리등을 담은 문자열 반환 public String getServletInfo() { System.out.println("getServletInfo"); return null; } } | cs |
서블릿 생명주기와 관련된 메서드 : init(), service(), destroy()
1. init()
서블릿 컨테이너가 서블릿을 생성한 후 초기화 작업을 수행하기 위해 호출하는 메서드
DB연결, 외부스토리 서버와 연결, 프로퍼티 로딩 등 클라이언트 요청을 처리하는데 필요한 자원을 미리 준비
2. service()
클라이언트가 요청할 때 마다 호출되는 메서드
3. destroy()
서블릿 컨테이너가 종료되거나 웹 애플리케이션이 멈출 때, 해당 서블릿을 비활성화 시킬때 호출되는 메서드
서비스 수행을 위해 확보했던 자원을 해제하거나 데이터를 저장하는 등의 마무리 작업
서블릿 인터페이스 기타 메서드 : getServletConfig(), getServletInfo()
1. getServletConfig()
서블릿 설정 정보를 다루는 ServletConfig 객체를 반환, 이 객체를 통해 서블릿 이름과 서블릿 초기 매개변수 값, 서블릿 환경정보를 얻을 수 있다.
2. getServletInfo()
서블릿을 작성한 사람에 대한 정보, 서블릿 버전, 권리 등을 담은 문자열을 반환
서블릿 배치정보 작성
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 | <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>webStart</display-name> <!-- 서블릿 선언 --> <servlet> <servlet-name>Hello</servlet-name> <servlet-class>com.doubles.webstart.HelloWorld</servlet-class> </servlet> <!-- 서블릿과 URL 연결 --> <servlet-mapping> <servlet-name>Hello</servlet-name> <url-pattern>/Hello</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> </web-app> | cs |
서블릿 선언
서블릿 배치정보를 작성할 때 먼저 <servlet> 태크를 사용하여 서블릿 별명과 서블릿 클래스명을 설정
<servlet-name> : 서블릿 별명 설정, 클래스 이름일 필요는 없음, 공백포함 가능
<servlet-class> : 패키지 이름을 포함한 서블릿 클래스 명 설정
서블릿에 URL 부여
클라이언트에서 서블릿 실행을 요청할 때 URL을 사용, 서블릿에 URL을 부여해야 클라이언트에서 요청할 수 있다.
<servlet-mapping> : 서블릿과 URL을 매핑할 때 사용
<servlet-name> : 앞서 <servlet>태그에 설정한 서블릿 별명을 동일하게 작성
<url-pattern> : 서블릿을 요청할 때 클라이언트가 사용할 URL을 설정, /Hello에서 '/'는 컨텍스트 루트(웹 어플리케이션 루트)를 의미