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> -->

 

posted @ 2020-05-13 22:22  two_q  阅读(359)  评论(0)    收藏  举报