프로그래밍/JSP Servlet

JSP/Servlet - 서블릿 초기화 파라미터

가카리 2016. 1. 4. 21:35
반응형

 

서블릿의 초기화 파라미터란 서블릿의 초기화 작업에 필요한 데이터를 의미합니다.

 

그리고 초기화 파라미터는 web.xml에 기재합니다.

 

<init-param>으로 묶고 <param-name> 파라미터 이름 </param-name> <param-value>파라미터 값 </param-value>

 

서블릿 클래스안에 초기화 파라미터 값을 가져오려면 getInitParameter 메소드를 이용하면 됩니다.

 

예제 구성은 다음과 같습니다.

 

 

InputName.html

 

<!DOCTYPE html>

<html>

<head>

<meta charset="EUC-KR">

<title>Insert title here</title>

</head>

<body>

    이름을 입력하세요.<br>

    <form action=GreetingServlet>

        이름: <input type=text name=NAME>

        <input type=submit value='확인'>

    </form>

</body>

</html>

 

GreetingServlet.java

 

package com.exam.kch;

 

import java.io.FileWriter;

import java.io.IOException;

import java.io.PrintWriter;

import java.util.GregorianCalendar;

 

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

 

public class GreetingServlet extends HttpServlet {

    private PrintWriter logFile;

    

    @Override

    public void init() throws ServletException {

        String filename = getInitParameter("FILE_NAME");//web.xml 정의된 값을 가져온다.

        try{

            logFile = new PrintWriter(new FileWriter(filename, true));

        }catch(IOException e){

            

            throw new ServletException(e);

        

        }

        

    }

    

    @Override

    protected void doGet(HttpServletRequest req, HttpServletResponse resp)

            throws ServletException, IOException {

        String name = req.getParameter("NAME");

        String greeting = "안녕하세요, " + name + ".";

        

        if(logFile != null){

            GregorianCalendar now = new GregorianCalendar();

            logFile.printf("%TF %TT - %s %n", now, now, name);//파일에 쓰기

        }

        

        resp.setContentType("text/html;charset=euc-kr");

        PrintWriter out = resp.getWriter();

        out.println("<HTML>");

        out.println("<HEAD><TITLE>인사하기</TITLE></HEAD>");

        out.println("<BODY>");

        out.println(greeting);//안녕하세요 누구님 띄우기

        out.println("</BODY>");

        out.println("</HTML>");

    }

    

    public void destroy(){

        if(logFile != null)

            logFile.close();//파일을 닫습니다.

    }

}

 

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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 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">

<display-name>ch6_jsp_init</display-name>

<servlet>

<servlet-name>greeting-servlet</servlet-name>

<servlet-class>com.exam.kch.GreetingServlet</servlet-class>

<init-param>

<param-name>FILE_NAME</param-name>

<param-value>C:\\Users\\kch\\Documents\\datalog.txt</param-value>

</init-param>

</servlet>

<servlet-mapping>

<servlet-name>greeting-servlet</servlet-name>

<url-pattern>/GreetingServlet</url-pattern>

</servlet-mapping>

</web-app>

 

 

실행 화면

다음과 같이 입력하면

서블릿을 출력하게 됩니다.

파일에도 제대로 저장됨을 알 수 있습니다.(파일에 아무것도 안뜨면 반드시 서버를 리부팅 시키기바랍니다.)

 

반응형