Servlet 본격적으로 살펴보기 4

리무 rimu ·2023년 6월 21일
0

Co.

목록 보기
8/43

서블릿 초기화 파라미터 ServletConfig

  • 특정 서블릿이 생성될 때 초기에 필요한 데이터들이 있음. 예를 들면 특정 경로 및 아이디 정보 이러한 데이터들을 초기화 파라미터라고 함
  • web.xml에 기술하고 Servlet파일에서는 ServletConfig 클래스를 이용해서 접근(사용)함
  • 또한 초기화 파라미터를 web.xml이 아닌 Servlet 파일(자바파일에 @ 넣어서 기술)에 직접 기술하는 방법도 있음

web.xml

<?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_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>ex_4</display-name>
  <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>
  <servlet>
    <description></description>
    <display-name>lnitParam</display-name>
    <servlet-name>lnitParam</servlet-name>
    <servlet-class>com.javalec.ex.lnitParam</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>lnitParam</servlet-name>
    <url-pattern>/lP</url-pattern>
  </servlet-mapping>
</web-app>

결과 >

ServletConfig는 인터페이스인데 GenericServlet이 구현받고 있고 그걸
HttpServlet이 상속받고 있기때문에 굳이 ServletConfig를 적어줄 필요 X

InitParam.java

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String id = getInitParameter("id");
		String pw = getInitParameter("pw");	
		System.out.println("id= " + id);
		System.out.println("pw= " + pw);
	}

web.xml

  <servlet>
    <description></description>
    <display-name>lnitParam</display-name>
    <servlet-name>lnitParam</servlet-name>
    <servlet-class>com.javalec.ex.lnitParam</servlet-class>
  <!-- 서블릿 안에 init-param 넣기! --> 
  <init-param>
  	<param-name>id</param-name>
  	<param-value>abcde</param-value>
  </init-param>
  <init-param>
  	<param-name>pw</param-name>
  	<param-value>12345</param-value>
  </init-param>
  </servlet> 
  <servlet-mapping>
    <servlet-name>lnitParam</servlet-name>
    <url-pattern>/lP</url-pattern>
  </servlet-mapping> 
</web-app>

Servlet파일에 초기화 파라미터(Initialization Parameter)기술

initParam.java (Servlet파일에 초기화 파라미터)

@WebServlet(urlPatterns= {"/initP"}, initParams= {@WebInitParam(name="id", value="aaaaa"), @WebInitParam(name="pw", value = "9999")})
public class lnitParam extends HttpServlet {
	private static final long serialVersionUID = 1L;

데이터 공유 : ServletContext

여러 Servlet에서 특정 데이터를 공유해야 할 경우 context parameter를 이용해서 web.xml에 데이터를 기술하고 Servlet에서 공유하면서 사용할 수 있음

웹어플리케이션 감시 : ServletContextListener

  • 웹어플리케이션의 생명주기(LifeCycle)를 감시하는 리스너(Listener)임
  • 리스너의 해당 메서드가 웹 어플리케이션의 시작과 종료 시 호출
    (contextInitalized(), contextDestroyed())
  • 언제 실행됐고 언제 죽는지 명시
  • 클래스를 별도로 만듬
  • implements 구현해서 사용해야 함

Add 해서 ServletContextlistner 넣어줘야 함!

web.xml에 넣어줌! 리스너 명시하기!!

<?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_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>ex_4</display-name>
  <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>
  	<listener>
  		<listener-class>com.javalec.ex.ServletL</listener-class>
  	</listener>

ServletL.java/ 리스너 클래스에 기술!

package com.javalec.ex;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
@WebListener
public class ServletL implements ServletContextListener {	
	@Override
	public void contextInitialized(ServletContextEvent arg0) {
		System.out.println("contextInitialized");
	}	
	@Override
	public void contextDestroyed(ServletContextEvent arg0) {
		System.out.println("contextDestroyed");
	}
}

이렇게 web.xml에 넣지않고 @WebListener 어노테이션을 이용해서 사용할 수도 있다!!

profile
JAVA / SQL / Spring 을 공부하고 있습니다 🐥

0개의 댓글