在 Servlet 容器初始化 Servlet 时,Servlet 容器将 ServletConfig 传给 Servlet 的 init 方法。ServletConfig 封装可以通过 @WebServlet 或 web.xml 传给一个 Servlet 的配置信息。以这种方式传递的每一条信息都称作初始参数,初始参数有两个组成部分:键和值。
getInitParameter
从 Servlet 内部获取某个初始参数的值,应该在 由 Servlet 容器传给 Servlet 的 init 方法的 ServletConfig 中调用 getInitParameter 方法
获取参数值:String contactName = servletConfig.getInitParameter("contactName");
getServletContext
从 Servlet 内部获取 ServletContext
package app01a;
import javax.servlet.*;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet(name = "ServletConfigDemoServlet",
urlPatterns = {"/servletConfigDemo"},
initParams = {
@WebInitParam(name="admin", value="Harry Potter"),
@WebInitParam(name="email", value="admin@example.com")
})
public class ServletConfigDemoServlet implements Servlet {
private transient ServletConfig servletConfig;
@Override
public void init(ServletConfig servletConfig) throws ServletException {
this.servletConfig = servletConfig;
}
@Override
public ServletConfig getServletConfig() {
return servletConfig;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
ServletConfig servletConfig = getServletConfig();
String admin = servletConfig.getInitParameter("admin");
String email = servletConfig.getInitParameter("email");
servletResponse.setContentType("text/html");
PrintWriter writer = servletResponse.getWriter();
writer.print("<html><head></head><body>" + "admin:" + admin + "<br/>Email:" + email + "</body></html>");
}
@Override
public String getServletInfo() {
return "ServletConfig demo";
}
@Override
public void destroy() {
}
}