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

1、page属性范围(pageContext范围)当前页面

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

单页面:

 设置和取得page范围的属性
1 <% // 设置page的属性范围,此属性只在当前JSP页面中起作用
pageContext.setAttribute("name", "李华");
pageContext.setAttribute("age", "18");
%>
<% // 从page属性范围中取出属性,并执行向下转型操作
String username =(String) pageContext.getAttribute("name");
String userage =(String) pageContext.getAttribute("age");
%> <h3>姓名:<%=username %></h3> <!-- 输出取得的属性内容 -->
<h3>年龄:<%=userage %></h3> <!-- 输出取得的属性内容 -->

  可行!!


双页面:

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

  错误!!

2、request属性范围(一次请求)

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

 服务器跳转:

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

  可行!!

使用超链接跳转(可以理解为重定向):

//  在test.jsp中设置request范围的属性
<% // 设置request的属性范围,此属性只在服务器跳转中起作用
request.setAttribute("name", "李华");
request.setAttribute("age", "18");
%>
<!-- 跳转后,地址栏改变,属于客户端跳转 -->
<a href = "forward.jsp">超链接获取属性</a> // 在forward.jsp中取得request范围的属性 <% //从request属性范围中取出属性,并执行向下转型操作
String username =(String) request.getAttribute("name");
String userage =(String) request.getAttribute("age");
%> <h3>姓名:<%=username %></h3> <!-- 输出取得的属性内容 -->
<h3>年龄:<%=userage %></h3> <!-- 输出取得的属性内容 -->

 错误!!

关于request属性范围的理解

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

session属性范围(一次会话)

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

application属性范围(一个项目)

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

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

jsp四种属性范围的更多相关文章

  1. JSP九大内置对象和四种属性范围解读

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文首先主要解说了JSP中四种属性范围的概念.用法与实例. 然后在这个基础之上又引入了九 ...

  2. Jsp学习总结(1)——JSP九大内置对象和四种属性范围解读

    一.四种属性范围 1.1.在JSP中提供了四种属性保存范围 page:在一个页面内保存属性,跳转之后无效 request:在一次服务请求范围内,服务器跳转后依然有效 session:-在一次会话范围内 ...

  3. JSP中四种属性保存范围(1)

    一.四种属性范围 在JSP中提供了四种属性保存范围 page:在一个页面内保存属性,跳转之后无效request:在一次服务请求范围内,服务器跳转后依然有效session:-在一次会话范围内,无论何种跳 ...

  4. css样式表中四种属性选择器

    学习此连接的总结http://developer.51cto.com/art/201009/226158.htmcss样式表中四种属性选择器1> 简易属性 tag[class]{ font-we ...

  5. position中的四种属性

    Position有四个属性值,分别是static .fixed. relative .absolute. 第一个属性值是static,这是position的默认属性,一般我们都不会用到它,所以也很少提 ...

  6. JSP 内置对象的四种属性范围

    在jsp页面中的对象,包括用户创建的对象(例如,javaBean对象)和JSP的隐含对象,都有一个范围属性.范围定义了在什么时间内,在哪一个JSP页面中可以访问这些对象.例如,session对象在会话 ...

  7. JSP中四种属性保存范围(2)

    1.session <%@ page language="java" contentType="text/html" pageEncoding=" ...

  8. jsp中提供的四种属性范围

    参考:http://www.cnblogs.com/xdp-gacl/p/3781056.html 1.当前页:一个属性只能在一个页面中取得,跳转到其他页面无法取得 2.一次服务器请求:一个页面中设置 ...

  9. Bitmap四种属性

    http://blog.csdn.net/rabbit_in_android/article/details/49967461 Bitmap: (1)     public Bitmap (int w ...

随机推荐

  1. selenium与页面交互之一:webdriver浏览器的属性

    selenium提供了许多API方法与页面进行交互,如点击.键盘输入.打开关闭网页.输入文字等. webdriver对浏览器提供了很多属性来对浏览器进行操作,常用的如图: get(url).quit( ...

  2. 07.AutoMapper 之列表和数组(Lists and Arrays)

    https://www.jianshu.com/p/419a3b7f12d5 列表和数组(Lists and Arrays) AutoMapper只需要配置元素类型的映射配置,不需要针对列表和数组进行 ...

  3. vue与react对比

    相同点 1.都使用 virtual DOM 2.都是组件化开发 or 都提供了组件化的视图组件 3.数据的改变会引起视图的二次渲染 4.都只有骨架,其他的功能如路由.状态管理等是框架分离的组件. 5. ...

  4. Delphi 语句

  5. win10将mongodb加入系统服务,官方源码报错问题记录

    进入C:\Program Files\MongoDB\Server\3.6目录下 1.编写配置文件mongodb.cfg: dbpath=D:\MongoDB\data\db #数据库路径 logpa ...

  6. mac下phpize编译提示Cannot find autoconf解决办法

    mac下phpize编译如下报错: /usr/bin/phpizeConfiguring for:PHP Api Version: 20121113Zend Module Api No: 201212 ...

  7. VCL界面控件DevExpress VCL Controls发布v19.1.2|附下载

    DevExpress VCL Controls是 Devexpress公司旗下最老牌的用户界面套包.所包含的控件有:数据录入,图表,数据分析,导航,布局,网格,日程管理,样式,打印和工作流等,让您快速 ...

  8. sevlet

    https://blog.csdn.net/Mithrandir_One/article/details/52900425 大家现在做的比较多的基本上就是 web 应用.所以一定要把 sevlet 及 ...

  9. Vue项目的痛点

    前言 用Vue做项目,难免会有痛点,移动端还是PC端,我也总结了下关于问题: 进入详情页的传参问题. 服务器接口跨域 axios封装请求 UI库的按需加载 如何只在当前页面中覆盖ui库中组件的样式 定 ...

  10. 【NOIP2016提高A组集训第1场10.29】完美标号

    题目 给定M个二元组(A_i, B_i),求X_1, ..., X_N满足:对于任意(A_i, B_i),有|X_{A_i} - X_{B_i}| = 1成立. 分析 显然,对于二元组(x,y),X_ ...