1. 程式人生 > >session和servletContext的比較,Servlet實現訪問次數的例子

session和servletContext的比較,Servlet實現訪問次數的例子

一、什麼是servletContext:

servletContext可以理解為伺服器端的一個共享空間,它可以被所有的客戶端訪問。基於這種特性,我們就可以利用servletContext做計數器等應用。
我們用個圖來描述cookie、session、servletContext的區別.
  區別在於session是區域性的,servletContext是共享的.當換了另一個視窗開始訪問又從0開始計數,而servletContext則是接下去計數.
  這裡寫圖片描述
上圖中,下面的A、B、C是代表客戶端的cookie,伺服器端的A、B、C代表session,D代表servletContext。

二、怎樣使用ServletContext

  • 1、首先得到ServletContext: this.getServletContext();
  • 2、ServletContext也是和session一樣像一張表,分為屬性、值
    新增屬性:setAttribute(String name,Object obj);
    得到值:getAttribute(String name);
    刪除屬性:removeAttribute(String name);
  • 3、生命週期
    ServletContext中的屬性的生命週期從建立開始,到伺服器關閉而結束

三、Servlet實現訪問次數的例子!

/*Servlet實現訪問次數的例子!*/
public class ShowTimesServlet extends HttpServlet { public doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, java.io.IOException { response.setContentType(" text/html"); HttpSession session = request.getSession(); String heading; Integer accessCount =(Integer)session.getAttribute(" accessCount"
); (accessCount == ) { accessCount = Integer(0); heading = " Welcom,You are first time to visit!"; } { heading = " Welcome Backer"; accessCount = Integer(accessCount.intValue()+1); } session.setAttribute(" accessCount",accessCount); PrintWriter out = response.getWriter(); out.println(" The title:"+heading); out.println(" Access count: "+accessCount); } public doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, java.io.IOException { doGet(request,response); } }

下面是通過servleContext來做訪問次數
Java程式碼:

package org.linweihan.test;

import java.io.IOException;
import java.io.PrintWriter;

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 TestServletContext extends HttpServlet {

    @Override
    protected  doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        ServletContext servletContext = .getServletContext();
        Integer accessCount =(Integer)servletContext.getAttribute(" accessCount");
        (accessCount == ){
            accessCount = 0;
        }{
            accessCount = accessCount + 1;

        }
        servletContext.setAttribute(" accessCount", accessCount);
        PrintWriter out = response.getWriter();
        out.println(" < html> < body> < h2> "+accessCount+" < /body> < /html> ");
    }
    protected  doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    }
}