서블릿 구성 파일에서 하나 이상의 <init-param> 태그를 사용하여 서블릿에 대한 일부 초기화 매개변수를 구성할 수 있습니다. 서블릿이 초기화 매개변수로 구성되면 웹 컨테이너는 서블릿 인스턴스 객체를 생성할 때 이러한 초기화 매개변수를 ServletConfig 객체에 자동으로 캡슐화하고, 서블릿의 init 메소드를 호출하면 ServletConfig 객체가 서블릿에 전달됩니다. 또한 프로그래머는 ServletConfig 객체를 통해 현재 서블릿의 초기화 매개변수 정보를 얻을 수 있습니다.
샘플 코드는 다음과 같습니다.
다음과 같이 코드 코드를 복사합니다.
패키지 com.yyz.servletconfig;
import java.io.IOException;
import java.util.Enumeration;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
공개 클래스 ServletConfigDemo1은 HttpServlet을 확장합니다.
ServletConfig 구성;
공개 무효 doGet(HttpServletRequest 요청, HttpServletResponse 응답)
ServletException, IOException이 발생합니다.
//지정된 초기화 매개변수를 가져옵니다.
문자열 값 = config.getInitParameter("xxx");
response.getOutputStream().write(value.getBytes());
//모든 초기화 매개변수를 가져옵니다.
열거형 e = cofig.getInitParameterNames();
while(e.hasMoreElements()){
문자열 이름 = (String) e.nextElement();
값 = config.getInitParameter(이름);
response.getOutputStream().write((name+"="+value+"<br/>").getBytes());
}
}
공개 무효 doPost(HttpServletRequest 요청, HttpServletResponse 응답)
ServletException, IOException이 발생합니다.
doGet(요청,응답);
}
@보수
public void init(ServletConfig config)에서 ServletException이 발생합니다.
this.config = 구성;
}
}
해당 web.xml은 다음과 같습니다.
다음과 같이 코드 코드를 복사합니다.
<?xml version="1.0" 인코딩="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-인스턴스"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
버전="2.5">
<서블릿>
<servlet-name>ServletConfigDemo1</servlet-name>
<servlet-class>com.yyz.servletconfig.ServletConfigDemo1</servlet-class>
<초기화 매개변수>
<param-name>xxx</param-name>
<param-value>yyy</param-value>
</init-param>
<초기화 매개변수>
<param-name>이름</param-name>
<param-value>yyz</param-value>
</init-param>
<초기화 매개변수>
<param-name>비밀번호</param-name>
<param-value>yyy</param-value>
</init-param>
</서블릿>
<서블릿 매핑>
<servlet-name>ServletConfigDemo1</servlet-name>
<url-pattern>/servlet/ServletConfigDemo1</url-pattern>
</서블릿 매핑>
</웹-앱>
테스트 결과는 다음과 같습니다.
위 코드에서는 ServletConfigDemo1 객체에 ServletConfig 객체가 있는데, 이는 실제로는 필요하지 않습니다. ServletConfigDemo1은 HttpServlet을 상속하고, 이는 GenericServlet을 상속하기 때문입니다. GenericServlet은 이미 내부적으로 ServletConfig 객체를 유지관리하고 있습니다. 관련 구현은 다음과 같습니다.
다음과 같이 코드 코드를 복사합니다.
공개 추상 클래스 GenericServlet
Servlet, ServletConfig, java.io.Serialized를 구현합니다.
{
… …
개인 임시 ServletConfig 구성;
공개 ServletConfig getServletConfig() {
구성 반환;
}
}
따라서 우리가 작성한 Servlet 객체의 getServletConfig() 메소드를 통해 ServletConfig 객체를 직접 가져올 수 있습니다. 샘플 코드는 다음과 같습니다.
다음과 같이 코드 코드를 복사합니다.
패키지 com.yyz.servletconfig;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
공개 클래스 ServletConfigDemo2는 HttpServlet을 확장합니다.
공개 무효 doGet(HttpServletRequest 요청, HttpServletResponse 응답)
ServletException, IOException이 발생합니다.
문자열 값 = this.getServletConfig().getInitParameter("name");
System.out.println(값);
}
공개 무효 doPost(HttpServletRequest 요청, HttpServletResponse 응답)
ServletException, IOException이 발생합니다.
doGet(요청, 응답);
}
}
web.xml 파일:
다음과 같이 코드 코드를 복사합니다.
<?xml version="1.0" 인코딩="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-인스턴스"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
버전="2.5">
<서블릿>
<servlet-name>ServletConfigDemo2</servlet-name>
<servlet-class>com.yyz.servletconfig.ServletConfigDemo2</servlet-class>
<초기화 매개변수>
<param-name>이름</param-name>
<param-value>yyz</param-value>
</init-param>
</서블릿>
<서블릿 매핑>
<servlet-name>ServletConfigDemo2</servlet-name>
<url-pattern>/servlet/ServletConfigDemo2</url-pattern>
</서블릿 매핑>
</웹-앱>