- 특정 서블릿이 생성될 때 초기에 필요한 데이터들이 있음. 예를 들면 특정 경로 및 아이디 정보 이러한 데이터들을 초기화 파라미터라고 함
- 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>
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;
여러 Servlet에서 특정 데이터를 공유해야 할 경우 context parameter를 이용해서 web.xml에 데이터를 기술하고 Servlet에서 공유하면서 사용할 수 있음
- 웹어플리케이션의 생명주기(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 어노테이션을 이용해서 사용할 수도 있다!!