游客:
注册
|
登录
|
帮助
网友俱乐部
»
网络编程
»
JSP教程
» 实例讲解在JSP开发中的对象和范围属性
网友生活网
|
网友学堂
如何获得金币?
诚招斑竹
IP归属地查询 PR查询 收录查询 whois查询
免费超短2级域名,your.jpy.cc
火狐浏览器,网上冲浪更快更爽更惬意
注册亚洲交友中心,找个人来同居吧!
7CODE查杀恶意代码,守护您的电脑
‹‹ 上一主题
|
下一主题 ››
投票
交易
悬赏
活动
打印
|
推荐
|
订阅
|
收藏
标题: 实例讲解在JSP开发中的对象和范围属性
ljjk5
元帅
UID 46706
精华
1
积分 99426
帖子 49691
威望 554
金币 48489
热心 505
阅读权限 100
注册 2007-2-25
状态 离线
#1
使用道具
发表于 2007-11-24 19:45
资料
个人空间
主页
短消息
加为好友
实例讲解在JSP开发中的对象和范围属性
在JSP页面中的对象,包括用户创建的对象(例如,JavaBean对象)和JSP的隐含对象,都有一个范围属性。范围定义了在什么时间内,在哪一个JSP页面中可以访问这些对象。例如,session对象在会话期间内,可以在多个页面中被访问。application对象在整个Web应用程序的生命周期中都可以被访问。在JSP中,有4种范围,如下所示。 ·page范围 具有page范围的对象被绑定到javax.servlet.jsp.PageContext对象中。在这个范围内的对象,只能在创建对象的页面中访问。可以调用pageContext这个隐含对象的getAttribute()方法来访问具有这种范围类型的对象(pageContext对象还提供了访问其他范围对象的getAttribute方法),pageContext对象本身也属于page范围。当Servlet类的_jspService()方法执行完毕,属于page范围的对象的引用将被丢弃。page范围内的对象,在客户端每次请求JSP页面时创建,在页面向客户端发送回响应或请求被转发(forward)到其他的资源后被删除。 ·request范围 具有request范围的对象被绑定到javax.servlet.ServletRequest对象中,可以调用request这个隐含对象的getAttribute()方法来访问具有这种范围类型的对象。在调用forward()方法转向的页面或者调用include()方法包含的页面中,都可以访问这个范围内的对象。要注意的是,因为请求对象对于每一个客户请求都是不同的,所以对于每一个新的请求,都要重新创建和删除这个范围内的对象。 ·session范围 具有session范围的对象被绑定到javax.servlet.http.HttpSession对象中,可以调用session这个隐含对象的getAttribute()方法来访问具有这种范围类型的对象。JSP容器为每一次会话,创建一个HttpSession对象,在会话期间,可以访问session范围内的对象。 ·application范围 具有application范围的对象被绑定到javax.servlet.ServletContext中,可以调用application这个隐含对象的getAttribute()方法来访问具有这种范围类型的对象。在Web应用程序运行期间,所有的页面都可以访问在这个范围内的对象。 下面我们通过几个简单的例子,来看一下这4种范围对象的应用。 1.测试page范围 test1.jsp <% pageContext.setAttribute("name","zhangsan"); out.println("test1.jsp: "); out.println(pageContext.getAttribute("name")); out.println("<p>"); pageContext.include("test2.jsp"); %> test2.jsp <% out.println("test2.jsp: "); out.println(pageContext.getAttribute("name")); %> 访问test1.jsp,将看到如下的输出: test1.jsp: zhangsan test2.jsp: null 说明保存在pageContext对象中的属性具有page范围,只能在同一个页面中被访问。 2.测试request范围 修改test1.jsp和test2.jsp,如下所示。 test1.jsp <% request.setAttribute("name","zhangsan"); out.println("test1.jsp: "); out.println(request.getAttribute("name")); out.println("<p>"); pageContext.include("test2.jsp"); %> test2.jsp <% out.println("test2.jsp: "); out.println(request.getAttribute("name")); %> 访问test1.jsp,将看到如下的输出: test1.jsp: zhangsan test2.jsp: zhangsan 说明保存在request对象中的属性具有request范围,在请求对象存活期间,可以访问这个范围内的对象。将pageContext.include("test2.jsp"); 这一句注释起来,先访问test1.jsp,再访test2.jsp,可以看到如下输出: test2.jsp: null 这是因为客户端开始了一个新的请求。 3.测试session范围 修改test1.jsp和test2.jsp,如下所示。 test1.jsp <% session.setAttribute("name","zhangsan"); %> test2.jsp <% out.println("test2.jsp: "); out.println(session.getAttribute("name")); %> 先访问test1.jsp,然后在同一个浏览器窗口中访问test2.jsp,可以看到如下输出: test2.jsp: zhangsan 说明保存在session对象中的属性具有session范围,在会话期间,可以访问这个范围内的对象。 如果我们在访问完test1.jsp后,关闭浏览器,重新打开浏览器窗口,访问test2.jsp,将看到如下输出: test2.jsp: null 这是因为客户端与服务器开始了一次新的会话。 4.测试application范围 修改test1.jsp和test2.jsp,如下所示。 test1.jsp <% application.setAttribute("name","zhangsan"); %> test2.jsp <% out.println("test2.jsp: "); out.println(application.getAttribute("name")); %> 先访问test1.jsp,然后关闭浏览器,再打开浏览器窗口,访问test2.jsp,可以看到如下输出: test2.jsp: zhangsan 说明保存在application对象中的属性具有application范围,在Web应用程序运行期间,都可以访问这个范围内的对象。(
网友
ljjk5
签名 - 网友社区
===
[广告]
免费域名(Free Subdomain)
免费空间(Free hosting)
PR查询(Google Pagerank)
投票
交易
悬赏
活动
控制面板首页
编辑个人资料
积分交易
公众用户组
好友列表
个人空间管理
基本概况
流量统计
客户软件
发帖量记录
论坛排行
主题排行
发帖排行
积分排行
在线时间
管理团队
管理统计
当前时区 GMT+8, 现在时间是 2008-7-26 07:46
信产部ICP备案:
京ICP备05066424号
北京市公安局网监备案:1101050648号
Powered by
Discuz!
5.5.0
TOP
清除 Cookies
-
联系我们
-
网友俱乐部
-
Archiver
-
WAP