서블릿 초기화 파라미터
정의
특정 서블릿이 생성될 때 초기에 필요한 데이터들이 있다.
이러한 데이터들을 초기화 파라미터라고 한다.
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과 같다.