四大域对象:

2018-10-08  本文已影响0人  小牛长成记

request:只对用户的一次请求有效。
session:对一次会话有效,会话的生命周期不结束,会话就不结束,属于某一个浏览器,浏览器关闭则Session消失,或者手动进行invalidate销毁Session。
servletContext:对当前应用有效。(应用:网站计数器,访问量)
pageContext:

它们的特点都是在维护一个Map集合

重写init,destory方法:
init方法的特点是当第一个用户访问服务器时首先先调用init方法,利用它的这个特点,我们先通过数据库调用上一次服务器重启,宕机时存入的访问量的数值。

@Override
public void init() throws ServletException {
    //调用service
    VisitedService visitedService = new VisitedService();
    //获取访问量
    int visited = visitedService.findVisited();
    //获取servletContext 对象
    ServletContext servletContext = this.getServletContext();
    //将获取的visited访问量封装到servletContext对象中
    servletContext.setAttribute("visited", visited);
}

这时在登陆成功的代码板块中我们对访问量进行调整,如果服务器第一次被访问,那么访问量为1,如果不是第一次访问visited++;

        /*
         * 网站计数器,直接调用getServletContext();方法即可得到ServletContext对象
         */
        ServletContext servletContext = this.getServletContext();
        if(servletContext.getAttribute("visited") == null){
            servletContext.setAttribute("visited", 1);
        }else{
            int visited = (int)servletContext.getAttribute("visited");
            visited++;
            servletContext.setAttribute("visited", visited);
        }

Destory()方法的特点是:当服务器重启,死机时,调用Destory()方法,所以我们需要将访问量存储到数据库中,调用destory()方法:

@Override
public void destroy() {
    //获取servletContext 对象
    ServletContext servletContext = this.getServletContext();   
    int visited = (int)servletContext.getAttribute("visited");
    //调用service
    VisitedService visitedService = new VisitedService();
    //存储访问量
    visitedService.updateVisited(visited);  
}
上一篇 下一篇

猜你喜欢

热点阅读