반응형
- ServletConfig
- 각 Servlet 객체에 대해 생성됨.
- ServletConfig가 제공하는 기능
- ServletCotext 객체를 얻는 기능
- 서블릿에 대한 초기화 작업 기능
src/main/java에 아래 이미지 설정처럼으로 InitParamServlet 서블릿 생성
- InitParamServlet
@WebServlet 주석을 걸고 web.xml을 설정하거나
wb.xml 설정 없이 @ WebServlet을 살려서 써도 같음
package sec06.ex01;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//@WebServlet(
// urlPatterns = {
// "/sInit",
// "/sInit2"
// },
// initParams = {
// @WebInitParam(name = "email", value = "admin@example"),
// @WebInitParam(name = "tel", value = "010-1111-2222")
// })
public class InitParamServlet extends HttpServlet {
public InitParamServlet() {
System.out.println("InitParamServlet 객체 생성");
}
@Override
public void init() throws ServletException {
System.out.println("InitParamServlet : init 메서드 호출");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
String email = getInitParameter("email");
String tel = getInitParameter("tel");
out.print("<html><body>");
out.print("<table><tr>");
out.print("<td>email : </td><td>" + email + "</td></tr>");
out.print("<tr><td>휴대전화 : </td><td>" + tel + "</td>");
out.print("</tr></table></body></html>");
// System.out.println("서블릿 config" + getInitParameter("email"));
// ServletContext ctx = getServletContext();
// System.out.println("서블릿 config" + ctx.getInitParameter("email"));
}
}
- @WebServlet과 대응되는 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/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
<!-- 서블릿 등록 -->
<servlet>
<servlet-name>sInit</servlet-name>
<servlet-class>sec06.ex01.InitParamServlet</servlet-class>
<!-- 초기화 파라미터 -->
<init-param>
<param-name>email</param-name>
<param-value>admin@example</param-value>
</init-param>
<init-param>
<param-name>tel</param-name>
<param-value>010-1111-2222</param-value>
</init-param>
</servlet>
<!-- 서블릿 매핑 -->
<servlet-mapping>
<servlet-name>sInit</servlet-name>
<url-pattern>/sInit</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>sInit</servlet-name>
<url-pattern>/sInit2</url-pattern>
</servlet-mapping>
</web-app>
sInit, sInit2 둘다 요청해도 값이 들어가면 됨
- @WebServlet 애너테이션을 이용한 서블릿 설정
요소 | 설명 |
urlPatterns | 웹 브라우저에서 서블릿 요청 시 사용하는 매핑이름 |
name | 서블릿 이름 |
loadOnStartup | 컨테이너 실행 시 서블릿이 로드되는 순서 지정 |
initParams | @webInitParam 애너테이션 이용해 매개변수를 추가하는 기능 |
description | 서블릿에 대한 설명 |
- load-on-statup 기능 사용하기
- 톰캣 컨테이너가 실행되면서 미리 서블릿을 실행함
- 지정한 숫자가 0이상이면 톰캣 컨테이너가 실행되면서 서블릿이 초기화됨
- 지정한 숫자는 우선순위를 의미하며 작은 숫자부터 먼저 초기화됨
- 애너테이션 방법과 web.xml 설정 방법이 있음
package sec06.ex02;
import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(urlPatterns = {"/loadConfig"}, loadOnStartup = 1)
public class LoadAppConfig extends HttpServlet {
private ServletContext ctx;
public LoadAppConfig() {
System.out.println("LoadAppConfig객체 생성");
}
@Override
public void init(ServletConfig config) throws ServletException {
System.out.println("LoadAppConfig 초기화 메소드 실행");
ctx = config.getServletContext();
String menu_member = ctx.getInitParameter("menu_member");
ctx.setAttribute("menu_member", menu_member);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String menu_member = (String) ctx.getAttribute("menu_member");
System.out.println(menu_member);
}
}
package sec06.ex02;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
@WebServlet(urlPatterns = {"/loadOnTest"}, loadOnStartup = 2)
public class LoadOnTest extends HttpServlet {
public LoadOnTest() {
System.out.println("LoadOnTest 객체 생성");
}
@Override
public void init() throws ServletException {
System.out.println("LoadOnTest : init 메서드 호출");
}
}
- loadOnStartup에 각각 1과 2를 주고 실행하면
- 작은 숫자부터 실행되는것을 확인할수 있다.
- loadOnStartup을 web.xml에 설정하는 방법
web.xml에 추가
<!-- 서블릿 등록 -->
<servlet>
<servlet-name>sInit</servlet-name>
<servlet-class>sec06.ex01.InitParamServlet</servlet-class>
<!-- 초기화 파라미터 -->
<init-param>
<param-name>email</param-name>
<param-value>admin@example</param-value>
</init-param>
<init-param>
<param-name>tel</param-name>
<param-value>010-1111-2222</param-value>
</init-param>
<!-- loadOnStartUp -->
<load-on-startup>3</load-on-startup>
</servlet>
<servlet>의 자식으로 <load-on-startup> 추가 해주면 끝
반응형
'학습 > JSP' 카테고리의 다른 글
14. 쿠키 (0) | 2022.11.09 |
---|---|
13. <hidden>태그와 URL Rewriting 이용해 웹 페이지 연동 (0) | 2022.11.09 |
11. ServletContext (0) | 2022.11.08 |
10. JSP파일에 출력하기 (0) | 2022.11.08 |
9. 포워드 (0) | 2022.11.07 |
댓글