ServletConfig接口允许Servlet获取其初始化参数。Servlet容器在调用Servlet的init()
方法之前,会将Servlet的初始化参数传递给Servlet。这些初始化参数通常在部署描述符(web.xml
)中配置,并且可以通过ServletConfig对象访问。
代码如下:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class MyServlet extends HttpServlet {
private String myParam;
public void init(ServletConfig config) throws ServletException {
super.init(config);
myParam = config.getInitParameter("myParam");
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html><body>");
out.println("My Parameter: " + myParam);
out.println("</body></html>");
}
}
Servlet通过调用 config.getInitParameter("myParam")
来获取名为"myParam"的初始化参数的值。这个值是在web.xml
中配置的。
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>MyServlet</servlet-class>
<init-param>
<param-name>myParam</param-name>
<param-value>Hello World</param-value>
</init-param>
</servlet>
ServletConfig接口其他常用的方法:
String getInitParameter(String name)
: 返回指定名称的初始化参数的值,如果不存在则返回null。Enumeration<String> getInitParameterNames()
: 返回一个包含所有初始化参数名称的Enumeration对象。ServletContext getServletContext()
: 返回ServletConfig对象关联的ServletContext对象,允许Servlet访问应用程序上下文的信息。String getServletName()
: 返回Servlet的名称,对应于部署描述符中的元素。
对应代码如下:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.Enumeration;
public class MyServlet extends HttpServlet {
private String myParam;
public void init(ServletConfig config) throws ServletException {
super.init(config);
myParam = config.getInitParameter("myParam");
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html><body>");
out.println("My Parameter: " + myParam);
ServletConfig config = getServletConfig();
Enumeration<String> initParameterNames = config.getInitParameterNames();
out.println("<br>Init Parameters:<br>");
while (initParameterNames.hasMoreElements()) {
String paramName = initParameterNames.nextElement();
String paramValue = config.getInitParameter(paramName);
out.println(paramName + ": " + paramValue + "<br>");
}
ServletContext context = config.getServletContext();
out.println("<br>Servlet Name: " + config.getServletName() + "<br>");
out.println("Context Path: " + context.getContextPath());
out.println("</body></html>");
}
}