文档章节

page request session application 范围

itfanr
 itfanr
发布于 2014/11/21 21:53
字数 1208
阅读 70
收藏 2
点赞 0
评论 0

在JSP页面中的对象,包括用户创建的对象(例如,JavaBean对象)和JSP的隐含对象,都有一个范围属性。范围定义了在什么时间内,

在哪一个JSP页面中可以访问这些对象。例如,session对象在会话期间内,可以在多个页面中被访问。application对象在整个Web应

用程序的生命周期中都可以被访问。在JSP中,有4种范围,如下所示。

1. page范围

具有page范围的对象被绑定到javax.servlet.jsp.PageContext对象中。在这个范围内的对象,只能在创建对象的页面中访问。可以调

用pageContext这个隐含对象的getAttribute()方法来访问具有这种范围类型的对象(pageContext对象还提供了访问其他范围对象的

getAttribute方法),pageContext对象本身也属于page范围。当Servlet类的_jspService()方法执行完毕,属于page范围的对象的

引用将被丢弃。page范围内的对象,在客户端每次请求JSP页面时创建,在页面向客户端发送回响应或请求被转发(forward)到其

他的资源后被删除。

2. request范围

具有request范围的对象被绑定到javax.servlet.ServletRequest对象中,可以调用request这个隐含对象的getAttribute()方法来访问

具有这种范围类型的对象。在调用forward()方法转向的页面或者调用include()方法包含的页面中,都可以访问这个范围内的对象。

要注意的是,因为请求对象对于每一个客户请求都是不同的,所以对于每一个新的请求,都要重新创建和删除这个范围内的对象。

request对象的主要方法:

1、 getParameter(String name) return String

2、 getParameterNames() return Enumeration

3、 getParameterValues(String name) return String[]

3.session范围

具有session范围的对象被绑定到javax.servlet.http.HttpSession对象中,可以调用session这个隐含对象的getAttribute()方法来访问

具有这种范围类型的对象。JSP容器为每一次会话,创建一个HttpSession对象,在会话期间,可以访问session范围内的对象。

Session对象的主要方法:

1、 getAttribute(String name) return Object

2、 getAttributeNames() return Enumeration

3、 getCreationTime() return long

4、 getId() return String

5、 GetLastAccessedTime() return long

6、 GetMaxInactiveInterval() return int

7、 RemoveAttribute(String name) void

8、 SetAttribute(String name , java.lang.Object value) void

4.application范围

具有application范围的对象被绑定到javax.servlet.ServletContext中,可以调用application这个隐含对象的getAttribute()方法来访问

具有这种范围类型的对象。在Web应用程序运行期间,所有的页面都可以访问在这个范围内的对象。

application对象的主要方法:

1、 getAttribute(String name) return Object

2、 getAttributeNames() return Enumeration

3、 getInitParameter(String name)

4、 getServletInfo()

5、 setAttribute(String name , Object object)

下面我们通过几个简单的例子,来看一下这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应用程序运行期间,都可以访问这个范围内的对象。


本文转载自:http://blog.sina.com.cn/s/blog_6a8938a90100lkyv.html

共有 人打赏支持
itfanr
粉丝 115
博文 447
码字总数 161777
作品 1
济南
程序员
Web应用使用pageContext对象

pageContext对象代表页面上下文,用于访问JSP之间的共享数据,使用pageContext可以访问page, request, session, application范围的变量。 使用pageContext对象的getAttribute(String name)函...

smartstone_2015
2016/09/28
40
0
变量存取范围及JSP、JSTL和Struts技术中变量的存取方法

JSP中变量的定义范围实际有5种:本地范围,页面范围(page),请求范围(request),会话范围(session)和应用程序范围(application)。 以下介绍在各种技术中的变量存取方法。 u JSP中: ...

china008
2014/10/15
0
0
JSP内置对象与servlet对应关系

隐式对象 说明 out 转译后对应JspWriter对象,其内部关联一个PringWriter对象 request 转译后对应HttpServletRequest/ServletRequest对象 response 转译后对应HttpServletRespons/ServletRes...

ke_ry
2016/12/17
0
0
初识Jsp,JavaBean,Servlet以及一个简单mvc模式的登录界面

1:JSP JSP的基本语法: 指令标识page,include,taglib; page指令标识常用的属性包含Language用来定义要使用的脚本语言;contentType定义JSP字符的编码和页面响应的MIME类型;pageEncoding:js...

别叫小伙
2016/11/18
0
0
jsp---l18格式化标签库

fmt:formatNumber标签根据区域或定制的方式将数字格式化成数字、货币或百分比 <fmt:formatNumber value="number" [type={number|currency|percent|}] [pattern="pattern"] [currencyCode="cu......

durban
2012/02/07
0
0
jsp---移除JavaBean的属性

JavaBean的移除根据不同的范围而不同 page范围,request范围,session范围,application范围对应的使用pageContext,request,session,application 方法都使用removeAttribute()方法 示例 ...

durban
2012/02/04
0
0
web对象page、request、session、application的生命周期

一、 影响范围与生命周期划分 WEB是基于HTTP协议的,HTTP协议是无状态的。无状态是指无法直接通过HTTP连接的相关属性来鉴别用户状态。但实际上的WEB应用通常是需要以用户会话的形式来支撑业务...

wangxiaoyi
2012/10/04
0
0
JSP中的九大内置对象和四大作用域

一、JSP9大内置对象 JSP9大内置对象分别为:request、response、session、application、out、pagecontext、config、page、exception 1、request对象 request 对象是 javax.servlet.httpServ...

独钓渔
2016/08/15
121
0
jsp九大内置对象

request 请求对象  类型 javax.servlet.ServletRequest 作用域 Request response 响应对象 类型 javax.servlet.SrvletResponse 作用域 Page pageContext 页面上下文对象 类型 javax.servle......

笑容掩饰爱
2017/09/22
0
0
JavaEE学习笔记jsp(一)

request对象 String getMethod():获取提交方式 String getRequestURl:获取请求URL String getProtocol():得到协议名称 String getServletPath():获得客户端请求服务器文件路径 String getQu...

奔跑的码农
2016/06/01
61
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

全新内存布局Android5 for one x

众所周知Android5.0默认ART模式,运行速度加倍,软件占用内存也加倍,我们one x这种元老机采用旧的内存布局,data空间2g ART模式下安装几个软件也就不够用了。最近逛国外的xda论坛,发现有大...

CrazyManDF
5分钟前
0
0
web3j转账

 web3 转账功能   为了完成以太坊交易,必须有几个先决条件   1、对方的以太坊地址   2、确定要转账的金额   3、自己地址的转账权限   4、大于转账金额的以太币,以太币转账其实就...

智能合约
5分钟前
0
0
10.28 rsync工具介绍 , rsync常用选项, rsync通过ssh同步

rsync远程同步 重点!重点!!重点!!! 例子 • rsync -av /etc/passwd /tmp/1.txt • rsync -av /tmp/1.txt 192.168.188.128:/tmp/2.txt rsync格式 • rsync [OPTION] … SRC DEST • rs......

Linux_老吴
19分钟前
0
0
iis php 环境搭建,非常详细的教程

准备篇 一、环境说明: 操作系统:Windows Server 2016 PHP版本:php 7.1.0 MySQL版本:MySQL 5.7.17.0 二、相关软件下载: 1、PHP下载地址: http://windows.php.net/downloads/releases/ph...

T_star
21分钟前
0
0
Day35 rsync通过服务同步

rsync通过服务同步 rsyncd.conf配置文件详解 port:指定在哪个端口启动rsyncd服务,默认是873端口。 log file:指定日志文件。 pid file:指定pid文件,这个文件的作用涉及服务的启动、停止等...

杉下
27分钟前
1
0
【最新最全】为 iOS 和 Android 的真机和模拟器编译 Luajit 库

编译 Luajit 库,的确是一个挑战。因为官网的教程,在当前版本的 Xcode 和 NDK 环境中,已经不适用了。以前只是编译了适用于真机的 Luajit 库。最近在尝试编译模拟器 Luajit 库,就顺便梳理了...

ios122
27分钟前
0
0
rsync至ssh同步

rsync: 文件同步工具,可实现“增量拷贝”;使用yum安装rsync包 常用选项:-a=-rtplgoD (-r同步目录,-t保持文件的时间属性,-p保持文件的权限属性,-l保持软连接,-g保持文件的属组,-o保持...

ZHENG-JY
32分钟前
0
0
TradingView 学习笔记

#前言 公司最后需要使用TradingView展示K线图走势。由于之前没接触过,拿到文档时一脸蒙逼。还好找到二篇文章+Demo代码,直接改改就行了。 #被批 由于上面的懵懂,有个问题困扰4个小时没解决...

hihubs
32分钟前
0
0
10.28 rsync工具介绍~10.31 rsync通过ssh同步

rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而...

洗香香
35分钟前
1
0
卷积为什么要旋转180度

参考《最容易理解的对卷积(convolution)的解释》 https://blog.csdn.net/bitcarmanlee/article/details/54729807 这篇博客详细讲解了“卷积”,提及了为什么要反转180度,我简述下。 1.卷积的...

datadev_sh
44分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部