通过已个简单的计数器 来说明下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的不同