博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jsp四种属性范围
阅读量:5092 次
发布时间:2019-06-13

本文共 2553 字,大约阅读时间需要 8 分钟。

在JSP提供了四种属性的保存范围。所谓的属性保存范围,指的就是一个设置的对象,可以在多个页面中保存并可以继续使用。它们分别是:page、request、session、appliction。

1、page属性范围(pageContext范围)

  page属性范围(使用pageContext表示,但一般来讲习惯于将这种范围称为page范围)只在一个页面范        围内有效,不能发生跳转,也就是说,在跳转到另一个页面后,就不能取得它的属性了。

单页面:

 

设置和取得page范围的属性  1 <%  // 设置page的属性范围,此属性只在当前JSP页面中起作用 2     pageContext.setAttribute("name", "李华"); 3     pageContext.setAttribute("age", "18"); 4 %> 5 <%  // 从page属性范围中取出属性,并执行向下转型操作 6     String username =(String) pageContext.getAttribute("name"); 7     String userage =(String) pageContext.getAttribute("age"); 8 %> 9 10 

姓名:<%=username %>

11

年龄:<%=userage %>

 

 

  可行!!

 

双页面:

 

在test.jsp页面设置page范围的属性  <%  // 设置page的属性范围,此属性只在当前JSP页面中起作用     pageContext.setAttribute("name", "李华");     pageContext.setAttribute("age", "18"); %> 
在forward.jsp页面取得page范围的属性 <% //从page属性范围中取出属性,并执行向下转型操作 String username =(String) pageContext.getAttribute("name"); String userage =(String) pageContext.getAttribute("age"); %>

姓名:<%=username %>

年龄:<%=userage %>

 

错误!!

 

2、request属性范围

   如果要在服务器跳转(<jsp:forward page="forward.jsp">这种方式;)之后属性可以继续保存下来,则可以使用request属性范围操作,request属性范围表示的是在服务器跳转之后,所有设置的内容在下一个页面依然会被保留下来。

 服务器跳转:

//  在test.jsp中设置request范围的属性<%     // 设置request的属性范围,此属性只在服务器跳转中起作用    request.setAttribute("name", "李华");    request.setAttribute("age", "18");%>
// 在forward.jsp中取得request范围的属性<% //从request属性范围中取出属性,并执行向下转型操作 String username =(String) request.getAttribute("name"); String userage =(String) request.getAttribute("age");%>

姓名:<%=username %>

年龄:<%=userage %>

 

 

  可行!!

使用超链接跳转:

//  在test.jsp中设置request范围的属性<%  // 设置request的属性范围,此属性只在服务器跳转中起作用    request.setAttribute("name", "李华");    request.setAttribute("age", "18");%> 
超链接获取属性// 在forward.jsp中取得request范围的属性<% //从request属性范围中取出属性,并执行向下转型操作 String username =(String) request.getAttribute("name"); String userage =(String) request.getAttribute("age");%>

姓名:<%=username %>

年龄:<%=userage %>

 

错误!!

 关于request属性范围的理解

   request表示的是客户端的请求,正常情况下,一次请求服务器只会给予一次回应,那么这个时候如果是服务器跳转,请求的地址栏没有改变,所以也就相当于回应了一次,而如果地址栏改变了,就相当于是发出了第二次请求,则第一次请求的内容肯定就已经消失了,所以无法取得。

session属性范围

   如果现在希望一个属性设置之后,可以再任何一个与设置页面相关的页面取得的话,则就可以使用session属性范围,使用session设置属性之后,不管是客户端还是服务器端跳转,只要属性设置了就都可以取得。(以下就不举例子,只需将上述两个里面的pageContext或request换成session即可

application属性范围

  如果现在希望设置一个属性,可以让所有的用户(每一个session)都能看得见的话,则可以将属性范围设置成application,这样属性就保存在了服务器之上。

 

  一般地,如果能使用request就尽量不要使用session,能使用session就尽量不要使用application

转载于:https://www.cnblogs.com/qzhc/p/11172777.html

你可能感兴趣的文章
作业三
查看>>
osi七层模型
查看>>
Android RxJava
查看>>
c++的准备知识18
查看>>
php中echo和print的区别
查看>>
IOS蓝牙设备数据回调的坑
查看>>
RPM查询篇
查看>>
Spring MVC @ResponseBody返回中文字符串乱码问题
查看>>
用户空间与内核空间,进程上下文与中断上下文[总结]
查看>>
OC语法基本使用
查看>>
JS 中的跨域请求
查看>>
JAVA开发环境搭建
查看>>
JavaScript 命名空间
查看>>
python19 random随机数 json模块 pickle模块 hashlib模块 hmac模块 shutil模块 shelve模块...
查看>>
Markdown 语法学习
查看>>
[lua]紫猫lua教程-命令宝典-L1-01-11. lua的个人补充
查看>>
SVN服务的配置与管理
查看>>
第03章-高级装配
查看>>
单例模式中的饿汉模式
查看>>
解决navicat在未联网的情况下访问不了MySQL数据库的现象
查看>>