灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:4240回复:0

Jsp中application session request的区别实例

楼主#
更多 发布于:2012-09-25 14:31

put.jsp


[html]
<%@ page contentType="text/html; charset=GBK" language="java"
   errorPage=""%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>application测试</title>
<meta name="website" content="http://www.crazyit.org" />
</head>
<body>
   <!-- JSP声明 -->
   <%!int i;%>
   <!-- 将i值自加后放入application的变量内 -->
   <%
       application.setAttribute("counter", String.valueOf(++i));
   %>
   <!-- 输出i值 -->
   <%=i%>
</body>
</html>
[html]

get.jsp
[html]
<%@ page contentType="text/html; charset=GBK" language="java"
   errorPage=""%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>application测试</title>
<meta name="website" content="http://www.crazyit.org" />
</head>
<body>
   <!-- 直接输出application 变量值 -->
   <%=application.getAttribute("counter")%>
</body>
</html>
       此时在不同的浏览器进程中刷新put.jsp页面,无论在哪个浏览器进程中访问get.jsp页面,必然得到的是连贯的值,因为counter的作用域是在application下,同时如果关闭浏览器,在重新打开访问put或者get页面得到的还是上次访问的值,因为application并没有销毁。同时注意,如果在不同浏览器中访问put页面(不管浏览器重新关闭打开与否),那么值是连贯的(接着上一次访问的" i " +1),因为这里中jsp转换为servlet(且只转换成一次),在服务器后台中只有一个实例对象,所以大家访问的  "  i  " 值是一样的,直到服务器把servlet销毁,或者服务器重启重新部署服务器应用则重置“i ”为0。





       如果代码中的application换成session(一次服务器与浏览器之间的连接,只有浏览器不关闭,该连接就一直存在),那么在不关闭浏览器进程下,在那个浏览器进程中访问get.jsp页面,得到的是那个浏览器中session.setAttribute("counter", String.valueOf(++i));因为counter的作用域是在session下,不同浏览器进程session不一样。如果关闭浏览器,则session销毁。保存的counter变量值变为null。





      如果代码中application换成request,那么不管何时何地访问get页面,得到的必然是null,因为重新访问了get页面,则是不同的请求request,所以request.getAttribute("counter")必定为空。


[java]

喜欢0 评分0
游客

返回顶部