JSP & Servlet

**web.xml의 <load-on-startup> , <init-param> 태그 의 이해**

Jungsoomin :) 2020. 7. 16. 14:45

web.xml의 초기화 파라미터, 즉 서블릿의 init() 시에 서블릿을 바로 객체화 시키는 데 사용하는 것이 

 

<load-on-startup> 태그이다. 태그의 몸통 부분에는 WAS 구동시 초기화 순서를 지정한다.

 

 


예를 들어 InternalResourceViewResolver나 DispatcherSerlvet 같은 경우, Default 서블릿 같은 경우에 사용하는 듯 싶다.

또한 서블릿 객체화 시parameter를 줄 수도 있는데 이는 <init-param>으로 정의한다. 

 

<init-param>의 자식태그로 <param-name>을 줘서 파라미터 이름을 지정하고 <param-value>태그로 값을 정의한다.

 

DispatcherSerlvet의 경우는 dispatcher 가  <param-name>인 것으로,

      <param-value> 값에 org.springframework.web.serlvet.DispatcherServlet 인 것으로 기억하고 있다.

<servlet>
 		<servlet-name>initMethod1</servlet-name>
 		<servlet-class>chap17.initMethodEx1</servlet-class>
 		<load-on-startup>1</load-on-startup> <!-- 톰캣이 가동하자마자 servlet이 시작하게 하게끔 하는 명령어임.  몸통에는 순서를 정한다. -->
 	</servlet>
 	
 	<servlet>
 		<servlet-name>initMethod2</servlet-name>
 		<servlet-class>chap17.initMethodEx2</servlet-class>
 		<load-on-startup>2</load-on-startup> <!-- 톰캣이 가동하자마자 servlet이 시작하게 하게끔 하는 명령어임.  몸통에는 순서를 정한다. -->
 	</servlet>
 	
 	<servlet>
 		<servlet-name>initparam servlet</servlet-name>
 		<servlet-class>chap17.InitParamServletEx1</servlet-class>
 		<init-param>
 			<param-name>name1</param-name> <!-- 미리 정의된 값을 서블릿에서 읽어낼 수 있도록 한다. -->
 			<param-value>value1</param-value>
 		</init-param>		
 		<init-param>
 			<param-name>name4</param-name>
 			<param-value>value4</param-value>
 		</init-param>
 	</servlet>
 	
 	<servlet-mapping>
 		<servlet-name>initparam servlet</servlet-name>
 		<url-pattern>/InitParamEX1</url-pattern> <!-- web.xml에 정의된 서블릿은 web.xml에서 맵핑해야 InitParam을 가져올 수 있다. -->
 	</servlet-mapping>

어노테이션으로 초기화 파라미터를 주는 방법 initParams 속성에 @webInitParam 의 속성값으로 키와 벨류를 준다. 

@WebServlet(urlPatterns = {"/InitParamEX1-1"} , initParams = {
		@WebInitParam(name = "name1", value = "value1" )
		, @WebInitParam(name = "name3" , value = "value3")})
public class InitParamServletEx1 extends HttpServlet {

 

두 방법은 같이 불러올 수가 없으므로 일관되게 정의하는게 중요하다.

 


xml 작성규칙 상 각 옵션은 &amp; 로 정의하며 어노테이션 방식에서는 &를 엔티티로 쓴다.  MyBatis 구동 과정을 참고하자.

<init-param>
 			<param-name>jdbcUrl1</param-name>
 			<param-value>
 			jdbc:mysql://localhost:3306/chap14?characterEncoding=utf8&name=p
 			</param-value>
 		</init-param>
 		
 		<init-param>
 			<param-name>jdbcUrl2</param-name>
 			<param-value>
 			jdbc:mysql://localhost:3306/chap14?characterEncoding=utf8&amp;name=p
 			</param-value>
 		</init-param>