기타/Servlet

서블릿 초기화 파라미터

공부하는리아 2020. 12. 8. 15:36

정의

특정 서블릿이 생성될 때 초기에 필요한 데이터들이 있다.

이러한 데이터들을 초기화 파라미터라고 한다.

 

web.xml을 이용한 방법

webContent > WEB-INF > web.xml 에서 초기화 파라미터 기술이 가능하다.

<!-- 특정 서블릿에 사용할 초기화 파라미터 지정 --> 
<servlet>
    <servlet-name>myServlet</servlet-name>
    <servlet-class>com.vison.servletex.HelloServlet3</servlet-class>
    <init-param>
        <param-name>dbName</param-name>
        <param-value>mydb</param-value>
    </init-param>
    <init-param>
        <param-name>dbPasswd</param-name>
        <param-value>myPasswd</param-value>
    </init-param>
</servlet>

<!-- 
JAVA 파일 만들때 맵핑을 별도 설정 안한 경우만 사용
중복 입력하면 에러가 나거나 초기값이 NULL로 뜬다
-->
<servlet-mapping>
    <servlet-name>myServlet</servlet-name>
    <url-pattern>/HS3</url-pattern>
</servlet-mapping>

<!-- 모든 서블릿에 사용가능한 초기화 파라미터 지정 -->
<context-param>
	<param-name>ourschool</param-name>
	<param-value>학원</param-value>
</context-param>
<context-param>
	<param-name>lecture</param-name>
	<param-value>강좌명</param-value>
</context-param>

<servlet> 태그안에 servlet을 구분할 수 있도록 <servlet-name>을 사용하고

어떤 servlet에 초기화 데이터를 제공할 것인지 <servlet-class>태그 안에 패키지 명을 포함한 경로를 적어준다.

 

초기화를 작성하는 태그는 2가지가 있다

<init-param> - 특정 서블릿에만 적용시킨다

<context-param> - 여러 서블릿에서 사용가능하다.

 

위 태그 안에는 각각 아래의 태그로 데이터를 넣을 수 있다.

<param-name> =  데이터를 구분하는 이름

<param-value> = 초기화 데이터 값

 

주의할 점은 맵핑이 꼭 필요하다는 것이다.

 

데이터를 모두 초기화 했으면 이제 사용해보자

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	String dbName = getInitParameter("dbName");
	String dbPasswd = getInitParameter("dbPasswd");
	String ourschool = getServletContext().getInitParameter("ourschool");
	String lecture = getServletContext().getInitParameter("lecture");
	
	request.setCharacterEncoding("utf-8");
	response.setContentType("text/html; charset=UTF-8");
	PrintWriter out = response.getWriter();
	out.println("아이디:" + dbName + "<br/>");
	out.println("비번:" + dbPasswd + "<br/>");
	out.println("소속:" + ourschool + "<br/>");
	out.println("어떤강좌:" + lecture + "<br/>");
	out.close();
}

호출 방법은 <param-name> 태그안의 이름을 getInitParameter( ) 안에 넣고 매개변수를 만들어주면 된다.

 

태그별로 호출 방식의 차이가 있으니 유의하자

<init-param>  = getInitParameter( )

<context-praram> = getServletContext( ).getInitParameter( )

 

 

@(어노테이션)을 이용한 방법

//@WebServlet("/HS2")
@WebServlet(
		urlPatterns="/HS2",
		initParams= {@WebInitParam(name="address", value="대전"),
				@WebInitParam(name="phone", value="010-4402-7984")
		})

@(어노테이션)을 이용하기 위해선 클래스 상단에 @WebServlet( ) 을 선언한다.

맵핑 - urlPatterns={"URL"},

initParams= { @WebInitParam ( name="", value="" ) }

 

먼저 맵핑을 해주고 ','로 구분 후에 web.xml에서 기술했던 방식과 동일하게 기입하면된다.

만들어진 초기화 데이터의 사용법은 web.xml과 같다.