ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 서블릿 초기화 파라미터
    기타/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과 같다.

    댓글

Designed by Tistory.