//tomcat启动时就会创建唯一的context,
//并且会调用它的方法加载web.xml中的
//公用参数,context是全局的,任何Servlet
//都可以使用.
LoginServlet.java
package web; import java.io.IOException; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class FindDeptServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { //tomcat启动时就会创建唯一的context, //并且会调用它的方法加载web.xml中的 //公用参数,context是全局的,任何Servlet //都可以使用. ServletContext ctx = getServletContext(); String size = ctx.getInitParameter("size"); System.out.println(size); System.out.println("分页查询部门数据"); //统计流量 Integer count = (Integer)ctx.getAttribute("count"); ctx.setAttribute("count", ++count); System.out.println(count); } }
xml
<!-- 在标签外配置的参数是给所有Servlet公用的参数. --> <context-param> <param-name>size</param-name> <param-value>20</param-value> </context-param>
当然 context也可以存储变量 如上的count
在InitServlet.java的init方法中通过ServletContext ctx = getServletContext();获得context
并设置变量的初始值
ctx.setAttribute("count", 0);
package web; import javax.servlet.ServletConfig; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; /** * 该Servlet不负责处理具体业务, * 只用来在tomcat启动时初始化数据. * 一般WEB项目都有1-2个这样的Servlet. * @author LZQ * */ public class InitServlet extends HttpServlet { @Override public void init(ServletConfig config) throws ServletException { super.init(config); //tomcat启动时会优先创建context, //然后再创建Servlet. ServletContext ctx = getServletContext(); //流量默认为0 ctx.setAttribute("count", 0); } }
xml
<servlet> <servlet-name>init</servlet-name> <servlet-class>web.InitServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <!-- 这个Servlet没人访问 所以后面这半不用写 这里注释掉 --> <!-- <servlet-mapping> <servlet-name>init</servlet-name> <url-pattern>/init</url-pattern> </servlet-mapping> -->
原文:https://www.cnblogs.com/gol2q/p/12885313.html