Servlet之Context的使用
//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> -->

浙公网安备 33010602011771号