티스토리 뷰

정리하기/서버

Servlet

내가송 2018. 8. 4. 20:16
반응형

Servlet Lifecycle

Tomcat 컨테이너는 서블릿 인스턴스를 관리하기 위해 다음의 Lifecycle을 사용한다. 


init() 

웹 컨테이너에 의해 서블릿 인스턴스 처음 생성


service()

클라이언트 요청을 받을 때 마다 호출 (doGet, doPost)


destroy()

웹 컨테이너에서 제거될 때 호출 


web.xml

서블릿을 실행하기 위해 관련된 설정 정보가 필요하다. 

web.xml 파일에는 이에 대한 정보가 있다.  

맵핑 방법은 여러 개이지만 

web.xml 파일을 생성하여 등록하는 방법에 대해 정리하려고 한다. 


다음은 예시 파일이다. 


<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"

         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"

         version="4.0">


<!-- 공통적으로 설정할 데이터 선언 -->  

    <context-param> // 1)

         <param-name>파라미터명</param-name>

   <param-value>파라미터 값</param-value> 

    </context-param>


    <listener> 2) 

<listener-class>실행될 파일 절대 경로</listener-class>

    </listener>


<!-- 서블릿을 등록하는 부분 --> 

    <servlet> 3) 

        <servlet-name>서블릿명</servlet-name>

        <servlet-class>서블릿이 실행될 class 명 (패키지명까지 포함된 절대 경로)</servlet-class>

    </servlet>


    <servlet>

        <servlet-name>ServletWithParam</servlet-name>

        <servlet-class> com.xxx.xxx.ServletWithParamServlet </servlet-class>

  <!-- ServletWithParam 서블릿에 접근한 경우 사용할 파라미터 -->  

 <init-param>// 3-1)

   <param-name>파라미터명</param-name>

   <param-value>default 값</param-value>

 </init-param>

<init-param>

   <param-name>name</param-name>

   <param-value>song</param-value>

 </init-param>

    </servlet>


<!-- 서블릿 인스턴스를 맵핑할 url에 대한 정의 -->  

    <servlet-mapping> // 4)

        <servlet-name>서블릿명</servlet-name>

        <url-pattern>서블릿이 실행된 url pattern</url-pattern>

    </servlet-mapping>


    <filter> // 5) 

       <filter-name>필터이름<filter-name>

 <filter-class>필터를 처리할 클래스</filter-class>

    </filter>

    <filter-mapping>

         <filter-name>필터 이름</filter-name>

        <url-pattern>/filter</url-pattern>

     </filter-mapping>

</web-app>



1) context-param

서블릿 실행을 위해 공통적으로 사용되는 컨텍스트 파라미터 선언 (모든 서블릿에 공유되어 사용)


- servlet 선언 전에 선언해줘야 한다. 

- 읽기만 가능 

- 선언된 값을 java 단에서 가져오기 위해선 다음과 같이 사용하면 된다. 


public class ContextParamServlet extends HttpServlet {

  public void doGet(HttpServletRequest request,  HttpServletResponse response) throws Exception) {

    String driver = getServletContext().getInitParameter("driver");

  } 


2) listener

웹 애플리케이션의 초기화/삭제를 감지하여 처리


- <listener-class>에 선언된 경로의 파일에서 관련 로직 처리가 가능하다. 

- context-param 태그 이후에 선언

- listener-class 에서 선언된 파일은 다음의 예시 참고


public class ContextListener extends ServletContextListener {

  @Override

  public void contextInitialized(ServletContextEvent event )  {

System.out.print(""생성");

  } 



  @Override

  public void contextDestroyed(ServletContextEvent event )  {

    System.out.print(""제거");

  } 

}


3) servlet

서블릿을 등록하는 부분


- <servlet-name>에는 서블릿 이름을 선언

- <servlet-class>에는 서블릿이 실행될 파일을 선언해준다. (파일은 패키지명 부터 적는다.)


3-1) init-param

특정 서블릿에서 필요한 parameter를 등록하는 부분 (초기화 파라미터)


- 다른 서블릿과 공유할 수는 없으며 ServletConfig 를 통해 접근이 가능하다. 

- java 단에서는 다음과 같인 접근이 가능


public class ContextParamServlet extends HttpServlet {

  public void doGet(HttpServletRequest request,  HttpServletResponse response) throws Exception) {

    System.out.print(getInitParameter("name")); // song 

  } 


4) servlet-mapping

url과 맵핑해주는 부분

 

5) filter

서블릿 요청 처리 전과 응답 값을 보내기 전에 처리하기 위한 로직을 선언


- filter-mapping 을 사용하여 url-pattern 을 정의 -> 특정 서블릿에 대한 필터 가능 

- 실제 처리하는 로직은 다음의 예시 참고 


public class CountryFilter implements Filter{

  public void doFilter(HttpServletRequest request,  HttpServletResponse response, FilterChain filterChain) throws Exception) {

     request.setCharacterEncoding("euc-kr");

     chain.doFilter(request, response);

  } 




반응형

'정리하기 > 서버' 카테고리의 다른 글

tomcat conf 디렉토리 살펴보기  (0) 2018.08.26
자바빈  (0) 2018.08.04
웹 애플케이션 개요  (0) 2018.08.04
tomcat 디렉토리 살펴보기  (0) 2018.07.24
Apache vs Tomcat  (0) 2018.07.21
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함