아무거나

[Servlet] 서블릿 학습(4) 본문

Java/JSP & Servlet

[Servlet] 서블릿 학습(4)

전봉근 2019. 12. 21. 21:31
반응형

[Servlet] 서블릿 학습(4)

1. 서블릿 초기화 파라미터 : ServletConfig

- 특정 Servlet이 생성될 때 초기에 필요한 데이터들이 있다. 이러한 데이터들을 초기화 파라미터라고 하며, web.xml에 기술하고 

  Servlet파일에서는 ServletConfig 클래스를 이용해서 접근(사용)합니다.

  또한 초기화 파라미터를 web.xml이 아닌 Servlet파일에 직접 기술하는 방법도 확인하자.

 

[web.xml 방식]

     (1) Servlet 클래스 제작

<servlet>
	<servlet-name>helloworld</servlet-name>
	<servlet-class>com.javalec.ex.HelloWorld</servlet-class>
</servlet>

......

 <servlet-mapping>
    <servlet-name>helloworld</servlet-name>
    <url-pattern>/hw</url-pattern> <!-- servlet-class의 클래스를 매핑할 임의의 이름을 입력한다. 주의할점은 /로 시작해야된다 -->
</servlet-mapping>

     

     (2) web.xml파일에 초기화 파라미터 기술

<servlet>
  <servlet-name>helloworld</servlet-name>
  <servlet-class>com.javalec.ex.HelloWorld</servlet-class>

  ......

  <!-- 초기화 파라미터 지정 -->
  <init-param>
    <param-name>id</param-name>
    <param-value>abcdef</param-value>
  </init-param>
  <init-param>
    <param-name>pw</param-name>
    <param-value>1234</param-value>
  </init-param>
  <init-param>
    <param-name>path</param-name>
    <param-value>C:\\javalec\\workspace</param-value>
  </init-param>       

  .......

 

     (3) ServletConfig 메소드 이용해서 데이터 불러오기

         - String id = getInitParameter("id");

         - String pw = getInitParameter("pw");

         - String path = getInitParameter("path");

     ** ServletConfig를 선언할 필요없이 어차피 HttpServlet이 상속받기 때문에 바로 getInitParameter을 갖다 쓰면 된다.

 

[Servlet 파일에 초기화 파라미터(Initialization Parameter) 직접 기술하는 방법]

   (1) Servlet 클래스 제작

 

   (2) @WebInitParam에 초기화 파라미터 기술

       - @WebServlet(urlPatterns={"/ServletInitParam"}, initParams={@WebInitParam(name="id", value="abcdef"), @WebInitParam=....})

 

   (3) ServletConfig 메소드 이용해서 데이터 불러오기

       - String id = getInitParameter("id");

       - String pw = getInitParameter("pw");

       - String path = getInitParameter("path");

 

2. 데이터 공유(ServletContext)

   - 1번 2번과 달리 모든 Servlet에서 쓸 수 있는(즉, 특정 데이터를 공유해야 할 경우) context parameter를 이용해서

     web.xml에 데이터를 기술하고, Servlet에서 공유하면서 사용할 수 있다.

 

[web.xml 방식]

   (1) Servlet 클래스 제작

 

   (2) web.xml 파일에 context parameter 기술(반드시 독립적으로 기술하며 Servlet매핑하는 태그보다 위에 위치를 해야한다.)

.........

<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<context-param>
  <param-name>id</param-name>
  <param-value>abcedf</param-value>
</context-param>
<context-param>
  <param-name>pw</param-name>
  <param-value>1234</param-value>
</context-param>
<context-param>
  <param-name>path</param-name>
  <param-value>C:\\javalec\\workspace</param-value>
</context-param>  
<servlet>
  <servlet-name>helloworld</servlet-name> <!-- 임의의 이름을 만든다 -->
  <servlet-class>com.javalec.ex.HelloWorld</servlet-class> <!-- 매핑할 클래스 파일명을 패키지명을 포함하여 정확히 입력 -->

  <!-- 초기화 파라미터 지정 -->
  <init-param>

  .........

 

   (3) ServletContext 메소드 이용해서 데이터 불러오기

       - String id = getServletContext().getInitParameter("id");

       - String pw = getServletContext().getInitParameter("pw");

 

3. 웹 어플리케이션 감시(ServletContextListener)

   - 웹 어플리케이션의 생명주기(LifeCycle)를 감시하는 리스너(Listener)가 있다. 바로 ServletContextListener이다.

     리스너의 해당 메소드가 웹 어플리케이션의 시작과 종료 시 호출 됩니다. ( contextInitialized(), contextDestroyed() )

 

[web.xml 방식]

 

   (1) 리스너 클래스 제작

       - ServletL이라는 클래스를 만들고 ServletContextListener를 implements한다.

       - 반드시 ServletContextListener를 implements 하고 있어야 한다.

       [ServletL.java]

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class ServletL implements ServletContextListener {
    @Override
    public void contextDestroyed(ServletContextEvent arg0) { // 종료될때
    	System.out.println("contextDestroyed");
    }

    @Override
    public void contextInitialized(ServletContextEvent arg0) { // 처음 웹 어플리케이션이 구동될때 실행
    	System.out.println("contextInitialized");
    }
}

   

   (2) web.xml파일에 리스너 클래스 기술

<listener>
	<listener-class>com.javalec.ex.ServletL</listener-class>
</listener>

 

[Servlet 파일에 직접 기술]

@WebListener로 명시를 해줘도 된다.

[ex]

@WebListener
public class ServletL implements ServletContextListener {
.....​ 

 

참고: https://www.inflearn.com/course/%EC%8B%A4%EC%A0%84-jsp-%EA%B0%95%EC%A2%8C/dashboard

반응형

'Java > JSP & Servlet' 카테고리의 다른 글

[JSP] 학습 2  (0) 2019.12.21
[JSP] 학습 1  (0) 2019.12.21
[Servlet] 서블릿 학습(3)  (0) 2019.12.21
[Servlet] 서블릿 학습(2)  (0) 2019.12.21
[Servlet] 서블릿 학습 (1)  (0) 2019.12.21
Comments