博客
关于我
强烈建议你试试无所不能的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

你可能感兴趣的文章
聚合与组合
查看>>
如何理解汉诺塔
查看>>
洛谷 P2089 烤鸡【DFS递归/10重枚举】
查看>>
Linux基本操作
查看>>
osg ifc ifccolumn
查看>>
C++ STL partial_sort
查看>>
centos redis 安装过程,解决办法
查看>>
IOS小技巧整理
查看>>
WebDriverExtensionsByC#
查看>>
我眼中的技术地图
查看>>
lc 145. Binary Tree Postorder Traversal
查看>>
sublime 配置java运行环境
查看>>
在centos上开关tomcat
查看>>
重启rabbitmq服务
查看>>
正则表达式(进阶篇)
查看>>
无人值守安装linux系统
查看>>
【传道】中国首部淘宝卖家演讲公开课:农业本该如此
查看>>
jQuery应用 代码片段
查看>>
MVC+Servlet+mysql+jsp读取数据库信息
查看>>
黑马程序员——2 注释
查看>>