在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. 如何用item pipeline(管道)清洗数据

    版权声明:本文为博主原创文章,转载请注明出处:如果博客中有错误之处抑或有可以改进的地方,欢迎在评论区留言. https://blog.csdn.net/f156207495/article/detai ...

  2. KL散度的理解(GAN网络的优化)

    原文地址Count Bayesie 这篇文章是博客Count Bayesie上的文章Kullback-Leibler Divergence Explained 的学习笔记,原文对 KL散度 的概念诠释 ...

  3. Jade学习(三)之语法规则下

    jade可以自动识别单双标签 // 1.jade内容: input(type="button", value="点击") div // 此时输出❌error:i ...

  4. 使用CXF开发WebService程序的总结(五):基于Map数据类型处理的的客户端和服务端代码的编写

    1. 首先我们按照List或数组等处理方式来处理Map,看看效果 1.1 在服务端的接口中添加以下方法 /** * 查询所有班级信息加上对应的学生列表 * * @return */ public Ma ...

  5. 【检测工具】keepalived安装及配置

    一.keepalived安装 keepalived是一个检测服务器状态的脚本,在高可用机制上经常可以看到它的身影. 在Linux中安装keepalived: 1.在网上直接下载相应的压缩包,推荐链接 ...

  6. killall - 以名字方式来杀死进程

    SYNOPSIS (总览) killall [-egiqvw] [-signal] name ... killall -l killall -V DESCRIPTION (描述) killall 发送 ...

  7. nginx的rewrite

    nginx服务的rewrite nginx后端服务的指令 1)upstream指令 :设置后端服务器组的主要指令 Upstream name {} 2)server指令:用于设定组内的服务器 3)Ip ...

  8. ifconfig命令返回找不到“-bash: ifconfig: command not found”

    “-bash: ifconfig: command not found“因为系统没有安装net-tools yum -y install net-tools

  9. Spring MVC文件上传下载(转载)

    原文地址: http://www.cnblogs.com/WJ-163/p/6269409.html 上传参考 http://www.cnblogs.com/lonecloud/p/5990060.h ...

  10. java 集合之ArrayList、Vector、LinkedList、CopyOnWriteArrayList

    ArrayList 线程不安全. 底层Object[]数组实现,用transient关键字修饰,防止序列化,然后重写了readObject和writeObject方法,为了提高传输效率. 插入时会判断 ...