1. 使用應(yīng)用上下文初始化參數(shù)
在編寫web應(yīng)用的時候,有時候需要在web應(yīng)用中加入一些配置,比如下面配置一些應(yīng)用加載的配置文件:
<!-- Context Configuration locations for Spring XML files -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:applicationContext*.xml</param-value>
</context-param>
可以在web.xml文件中使用<context-param>標(biāo)簽配置響應(yīng)的參數(shù)。
下面舉一個簡單的例子,在web.xml中配置應(yīng)用應(yīng)用上下文參數(shù)
<context-param>
<param-name>context_param1</param-name>
<param-value>1</param-value>
</context-param>
<context-param>
<param-name>context_param2</param-name>
<param-value>2</param-value>
</context-param>
編寫servlet類,獲取這寫參數(shù)并返回到前端線上。
@WebServlet(name = "contextParameterServlet", urlPatterns = "/contextParameter")
public class ContextParameterServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//使用getInitParameter獲取配置的初始化參數(shù)
String param1 =req.getServletContext().getInitParameter("context_param1");
String param2 =req.getServletContext().getInitParameter("context_param2");
PrintWriter printWriter = resp.getWriter();
printWriter.println("param1 "+param1);
printWriter.println("param2 "+param2);
printWriter.flush();
}
}
上面的代碼先獲取servletContext,再通過getInitParameter的方式獲取相應(yīng)的參數(shù)。
在瀏覽器中訪問 http://localhost:8080/contextParameter 會看到如下的結(jié)果:

2. 使用Servlet初始化參數(shù)
上面是使用servletContext獲取初始化參數(shù),這個參數(shù)是整個上線文共享的,如果只想在單個servlet中配置一些參數(shù),可以使用在web.xml文件中的<servlet>標(biāo)簽內(nèi)配置<init-param>標(biāo)簽,下面舉個例子。
@WebServlet(
name = "servletParameterServlet",
urlPatterns = {"/servletParameter"},
initParams = {@WebInitParam(name = "server", value = "mysql")
, @WebInitParam(name = "database", value = "user")}
)
public class ServletParameterServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//使用servletConfig類進(jìn)行獲取
ServletConfig sc = this.getServletConfig();
String server = sc.getInitParameter("server");
String database = sc.getInitParameter("database");
resp.getWriter().println("server : [" + server + "] database : [" + database + "]");
}
}
在獲取servlet的配置參數(shù)時,使用ServletConfig類進(jìn)行獲取。
上面的代碼使用了注解的方式進(jìn)行配置,配置的初始化參數(shù)使用initParams,也可以在配置文件中配置如下:
<servlet>
<servlet-name>servletParameterServlet</servlet-name>
<servlet-class>com.fishfree.javaweb.servlet.ContextParameterServlet</servlet-class>
<init-param>
<param-name>server</param-name>
<param-value>mysql</param-value>
</init-param>
<init-param>
<param-name>database</param-name>
<param-value>user</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>servletParameterServlet</servlet-name>
<url-pattern>/servletParameter</url-pattern>
</servlet-mapping>