通过已个简单的计数器 来说明下request 和 session 还有 application的范围

1.新建一个jsp页面 ,里面写java代码,application的范围是 应用在服务器的,只要服务器不关闭,就存在application:

<%  //先if判断 第一次getAttribute是否为空,为空,则setAttribute 字符串1

if(application.getAttribute("counter") == null ){

     application.setAttribute("counter","1");

}else{  //如果不为空  定义一个字符串strnum  将上面getAttribute的值赋给strnum,强转为字符串

     String strnum = null;

     strnum = (String)application.getAttribute("counter");

     int icount = 0;  //再定义一个×××

     icount = Integer.valueOf(strnum).intValue();   //获取strnum的值转成×××

     icount++;   //将这个变量进行递增

     application.setAttribute("counter",Integer.toString(icount));

     //最后 将 icount转成字符串 通过setAttribute 给counter

}

%>   //然后 输出,不同的浏览器 共享数据结果

您是第<%= application.getAttribute("counter") %>位访问者

2.上面是application,接下来时session,因为Attribute方法是一样的,所以只将application换成session就可以了:

<%  //先if判断 第一次getAttribute是否为空,为空,则setAttribute 字符串1

if(application.getAttribute("counter") == null ){

     application.setAttribute("counter","1");

}else{  //如果不为空  定义一个字符串strnum  将上面getAttribute的值赋给strnum,强转为字符串

     String strnum = null;

     strnum = (String)application.getAttribute("counter");

     int icount = 0;  //再定义一个×××

     icount = Integer.valueOf(strnum).intValue();   //获取strnum的值转成×××

     icount++;   //将这个变量进行递增

     application.setAttribute("counter",Integer.toString(icount));

     //最后 将 icount转成字符串 通过setAttribute 给counter

}

%>   //然后 输出,不同的浏览器,是自己独立的结果,因为每个浏览器是独立的session,关掉浏览器,session也关闭了。

您是第<%= application.getAttribute("counter") %>位访问者

3.最后是request,request是每次请求完成后就断开了,生命周期就结束了。那么将application改成request的话,那再了浏览器 运行这段代码,就算不停的刷新,那么输出的结果总是一,因为每次刷新完后,request的结束了:

<%  //先if判断 第一次getAttribute是否为空,为空,则setAttribute 字符串1

if(application.getAttribute("counter") == null ){

     application.setAttribute("counter","1");

}else{  //如果不为空  定义一个字符串strnum  将上面getAttribute的值赋给strnum,强转为字符串

     String strnum = null;

     strnum = (String)application.getAttribute("counter");

     int icount = 0;  //再定义一个×××

     icount = Integer.valueOf(strnum).intValue();   //获取strnum的值转成×××

     icount++;   //将这个变量进行递增

     application.setAttribute("counter",Integer.toString(icount));

     //最后 将 icount转成字符串 通过setAttribute 给counter

}

%>   //然后 输出,不停的刷新,结果也只会是1

您是第<%= application.getAttribute("counter") %>位访问者

 

通过以上 3段代码,很清晰就解释了request 和 session 和 application的不同