request,Servlet,Context的作用域比较


 首先讲讲Servlet的一些相关的接口关系

1.Servlet接口:每个Servlet必须直接或间接地实现该接口,它有一个

getServeletConfig();

 

 

 

2.ServeletConfig接口提供了Servelet的相关配置信息,在这个接口中有一个getServletContext()方法,所以我们可以获得Context全局的对象

 

因为一般的Servlet抽象实现类GenericServlet()(独立于协议的)实现了以上的两个接口

 

 

代码的测试:

 

目的:分别用requestServletContext记录一个在它们里面通过setAttribute()属性页面打开的次数

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    	response.setContentType("text/html;charset=utf-8");
    	PrintWriter out=response.getWriter();
    	out.println("<html><head>");
		out.println("<title>Servlet属性范围测试 </title>");
		out.println("  </head><body>");	
		//测试request对象的作用域范围
    	
Integer irequest=(Integer)request.getAttribute("viewcount");
		if(null==irequest){
			irequest=1;
			
                                  request.setAttribute("viewcount",irequest);
		}else{
		  request.setAttribute("viewcount",++irequest);
		}
	out.println("登录次数在request中为:"+request.getAttribute("viewcount")+"<br>");
		
		//测试Session对象的作用域范围
		HttpSession session=request.getSession();
    Integer isession=(Integer)session.getAttribute("viewcount");
    	
		if(null==isession){
			isession=1;
		session.setAttribute("viewcount",isession);
		}else{
		session.setAttribute("viewcount",++isession);
		}
	out.println("登录次数在Session中为:"+session.getAttribute("viewcount")+"<br>");
		
		//测试Context对象的作用域范围
		ServletContext context=this.getServletContext();
Integer icontext=(Integer)context.getAttribute("viewcount");
		    	
		if(null==icontext){
		icontext=1;
		context.setAttribute("viewcount",icontext);
			}else{
					context.setAttribute("viewcount",++icontext);
				}
	out.println("登录次数在Context中为:"+context.getAttribute("viewcount")+"<br>");
	   
		out.flush();
		out.close();
		
    }

  

 

 

 

 

打开多个浏览器就可看到以下的结果:

在首先IE浏览器中

 


request,Servlet,Context的作用域比较
 

 

再在搜狗浏览器中


request,Servlet,Context的作用域比较
 

 

 

request肯定会重新计数的,说明它的作用域只是一次请求

Session对应于浏览器的个数,在浏览器的基础上计数

Context无论你开多少个浏览器,只要你不关机,它总是在原来的基础上计数的

<!--EndFragment-->

你可能感兴趣的:(servlet)