Post
Servlet 값 초기화, 리스너
ServletConfig
- 특정 Servlet이 생성될 때 초기에 필요한 데이터가 있음.
- WebContent/WEB-INI/web.xml에 기술하고 Servlet 파일에서는 Servlet.Config 클래스를 이용해서 접근.
- 아래 예제에서 InitParam 주소를 IP로 mapping 하고 있다.
- 또 Parameter id, pw에 값을 초기화할 수도 있다.
WebContent\web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>LifeCycle</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>
<servlet-name>InitParam</servlet-name>
<servlet-class>com.java.w.InitParam</servlet-class>
<init-param>
<param-name>id</param-name>
<param-value>id</param-value>
</init-param>
<init-param>
<param-name>pw</param-name>
<param-value>12345</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>InitParam</servlet-name>
<url-pattern>/IP</url-pattern>
</servlet-mapping>
</web-app>
InitParam.java
package com.java.w; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class InitParam */ @WebServlet("/InitP") public class InitParam extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public InitParam() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.getWriter().append("Served at: ").append(request.getContextPath()); String id = getInitParameter("id"); String pw = getInitParameter("pw"); System.out.println("id ="+id); System.out.println("pw ="+pw); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }
Servlet에서 Parameter를 직접 초기화 할 수도 있다.
- @WebServlet("/InitP") 되어있는 소스코드를 아래와 같이 수정한다.
- @WebServlet(urlPatterns= {"/InitP"}, initParams={@WebInitParam(name="id", value="id"), @WebInitParam(name="pw", value="1234")})
Servlet 데이터 공유
- 여러 Servlet에서 특정 데이터를 공유할 수 있다.
- web.cml파일에 context parameter 을 넣는다.
- 여러 Servlet이 사용하므로 코드 상단에 추가해야한다.
- ServletContext 메소드를 이용해서 데이터를 불러온다.
web.xml
<context-param>
<param-name>id</param-name>
<param-value>abc</param-value>
</context-param>
<context-param>
<param-name>pw</param-name>
<param-value>123</param-value>
</context-param>
jsp
String id = getServletContext().getInitParameter("id");
String pw = getServletContext().getInitParameter("pw");
System.out.println("id="+id);
System.out.println("pw="+pw);
웹 어플리케이션 감시
웹어플리케이션을 감시하는 Listener를 만들수 있다.
ServletContextListener을 상속하면 감시 클래스가 된다.
웹 어플리케이션 시작, 종료 시 호출된다.(호출함수:contextInitialized, contextDestroyed)
WebContent\web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>LifeCycle</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.java.w.ServetlL
</listener-class>
</listener>
</web-app>
package com.java.w; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class ServetlL implements ServletContextListener{ @Override public void contextDestroyed(ServletContextEvent sce) { // TODO Auto-generated method stub System.out.println("contextDestroyed"); } @Override public void contextInitialized(ServletContextEvent sce) { // TODO Auto-generated method stub System.out.println("contextInitialized"); } }
Servlet Listener
- web.xml 에서 Lisner를 선언하지 않고 Servelt 소스코드에서(class 이름 위에)@WebListener 라고 명시해도 Listener 클래스가 된다
'이전게시판 > JSP' 카테고리의 다른 글
JDBC로 OLACLE 접속 (0) | 2018.10.22 |
---|---|
JSP 쿠키, Session, 예외 페이지, 자바빈 (0) | 2018.10.21 |
JSP 태그, request, response, 지시자, 액션태그 (0) | 2018.10.20 |
Servlet Get,Post 동작 (0) | 2018.10.19 |
Servlet 설정, 예제 (0) | 2018.10.18 |
JSP 설치, 설정, 실행 (0) | 2018.10.18 |