서블릿의 브라우저 최초 요청에 대한 긴 실행 시간 단축
톰캣 컨테이너 실행 시 미리 서블릿 실행
우선순위 지정 시 서블릿 초기화
방법1. 애너테이션 이용
ServletContext 객체 사용
web.wml 파일보다 빠르게 읽고 출력 가능
pro08/src/sec06/ex02/LoadAppConfig.java
package sec06.ex02;
...
@WebServlet(name = "loadConfig", urlPatterns = { "/loadConfig" }, loadOnStartup = 1) // loadOnStartup 우선순위 설정
public class LoadAppConfig extends HttpServlet {
private ServletContext context;
@Override
public void init(ServletConfig config) throws ServletException {
System.out.println("LoadAppConfig의 init 메소드 호출");
/* ServletContext 객체 & 데이터 가져오기 */
context = config.getServletContext();
String menu_member = context.getInitParameter("menu_member");
String menu_order = context.getInitParameter("menu_order");
String menu_goods = context.getInitParameter("menu_goods");
/* 데이터 바인딩 */
context.setAttribute("menu_member", menu_member);
context.setAttribute("menu_order", menu_order);
context.setAttribute("menu_goods", menu_goods);
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
// ServletContext context = getServletContext(); 사용하지 않는 코드 주석처리
/* 바인딩된 데이터 가져오기 */
String menu_member = (String) context.getAttribute("menu_member");
String menu_order = (String) context.getAttribute("menu_order");
String menu_goods = (String) context.getAttribute("menu_goods");
out.print("<html><body>");
out.print("<table border=1 cellspacing=0><tr>메뉴 이름</tr>");
out.print("<tr><td>" + menu_member + "</td></tr>");
out.print("<tr><td>" + menu_order + "</td></tr>");
out.print("<tr><td>" + menu_goods + "</td></tr>");
out.print("</table></body></html>");
}
}
방법2. web.xml 설정
pro08/WebContent/WEB-INF/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_3_0.xsd" id="WebApp_ID" version="3.0">
<servlet>
<servlet-name>loadConfig</servlet-name> <!-- 서블릿 생성 시 name 값 -->
<servlet-class>sec06.ex02.LoadAppConfig</servlet-class> <!-- 서블릿 클래스 이름 -->
<load-on-startup>1</load-on-startup> <!-- 우선순위 설정 -->
</servlet>
<servlet-mapping>
<servlet-name>loadConfig</servlet-name>
<url-pattern>/loadConfig</url-pattern>
</servlet-mapping>
</web-app>
*자바 웹을 다루는 기술