3.1、四种属性范围(重点)

       所谓的属性范围,就是指一个对象可以跨多少个 JSP 页面之后可以继续使用。

3.1.1、操作方法

       在整个 JAVA WEB 中属性操作使用如下的方法:
              · 设置属性: public void setAttribute(String name,Object attribute)
              · 取得属性: public Object getAttribute(String name)
              · 删除属性: public Object removeAttribute(String name)
       在 JSP 中有以下四个对象都支持以上的三个方法:
              · page ( pageContext )
              · request
              · session
              · application

3.1.2、page属性范围

       在一个 JSP 页面上设置的属性只能在一个页面取得,跳转到其他页面则此属性消失。
PageScopeDemo01.jsp
<%@page contentType="text/html;charset=GBK"%>
<%@page import="java.util.*"%>
<%
         // 设置两个属性
         pageContext.setAttribute("uname","HELLO") ;
         pageContext.setAttribute("udate",new Date()) ;
         // 取得属性
         String name = (String)pageContext.getAttribute("uname") ;
         Date date = (Date)pageContext.getAttribute("udate") ;
%>
<h1>name --> <%=name%></h1>
<h1>date --> <%=date%></h1>
       当前页可以取得所设置的属性,下面对页面进行修改,让其完成一此跳转。
PageScopeDemo02.jsp
<%@page contentType="text/html;charset=GBK"%>
<%@page import="java.util.*"%>
<%
         // 设置两个属性
         pageContext.setAttribute("uname","HELLO") ;
         pageContext.setAttribute("udate",new Date()) ;
%>
<jsp:forward page="PageScopeDemo03.jsp"/>
PageScopeDemo03.jsp
<%@page contentType="text/html;charset=GBK"%>
<%@page import="java.util.*"%>
<%
         // 取得属性
         String name = (String)pageContext.getAttribute("uname") ;
         Date date = (Date)pageContext.getAttribute("udate") ;
%>
<h1>name --> <%=name%></h1>
<h1>date --> <%=date%></h1>
       证明:一个页面上设置的属性,只能在本页面中取得。如果现在希望可以在跳转页中取得,则可以扩大范围到 request 范围上去。

3.1.3、request属性范围

       request 可以把属性保存在一次服务器跳转范围之中。
RequestScopeDemo01.jsp
<%@page contentType="text/html;charset=GBK"%>
<%@page import="java.util.*"%>
<%
         // 设置两个属性
         request.setAttribute("uname","HELLO") ;
         request.setAttribute("udate",new Date()) ;
%>
<jsp:forward page="RequestScopeDemo02.jsp"/>
RequestScopeDemo02.jsp
<%@page contentType="text/html;charset=GBK"%>
<%@page import="java.util.*"%>
<%
         // 取得属性
         String name = (String)request.getAttribute("uname") ;
         Date date = (Date)request.getAttribute("udate") ;
%>
<h1>name --> <%=name%></h1>
<h1>date --> <%=date%></h1>
但是,需要注意的是,如果使用了下面的跳转形式,则不能够取得:
RequestScopeDemo03.jsp
<%@page contentType="text/html;charset=GBK"%>
<%@page import="java.util.*"%>
<%
         // 设置两个属性
         request.setAttribute("uname","HELLO") ;
         request.setAttribute("udate",new Date()) ;
%>
<a href="RequestScopeDemo02.jsp">RequestScopeDemo02.jsp</a>
       发现以上程序执行之后,地址栏改变了,但是设置的属性也消失了。
       如果现在希望无论怎样跳转,属性都可以被保存下来,则就要扩大到 session 范围

3.1.4、session属性范围

       session 属性范围无论页面怎样跳转,都可以保存下来,但是只针对于同一个浏览器打开的相关页面。
SessionScopeDemo01.jsp
<%@page contentType="text/html;charset=GBK"%>
<%@page import="java.util.*"%>
<%
         // 设置两个属性
         session.setAttribute("uname","HELLO") ;
         session.setAttribute("udate",new Date()) ;
%>
<a href="SessionScopeDemo02.jsp">SessionScopeDemo02.jsp</a>
SessionScopeDemo02.jsp
<%@page contentType="text/html;charset=GBK"%>
<%@page import="java.util.*"%>
<%
         // 取得属性
         String name = (String)session.getAttribute("uname") ;
         Date date = (Date)session.getAttribute("udate") ;
%>
<h1>name --> <%=name%></h1>
<h1>date --> <%=date%></h1>
       可以把每一个用户理解为一个 session 。如果现在希望所有的用户都可以看见,则就可以继续扩大范围 —— application 范围。

3.1.5、application属性范围

       application 范围,是把属性设置在整个服务器上,所有的用户都可以进行访问。
ApplicationScopeDemo01.jsp
<%@page contentType="text/html;charset=GBK"%>
<%@page import="java.util.*"%>
<%
         // 设置两个属性
         application.setAttribute("uname","HELLO") ;
         application.setAttribute("udate",new Date()) ;
%>
ApplicationScopeDemo02.jsp
<%@page contentType="text/html;charset=GBK"%>
<%@page import="java.util.*"%>
<%
         // 取得属性
         String name = (String)application.getAttribute("uname") ;
         Date date = (Date)application.getAttribute("udate") ;
%>
<h1>name --> <%=name%></h1>
<h1>date --> <%=date%></h1>
       如果服务器一关闭,则所有的 application 属性都消失,属性保存在服务器之上,如果此属性保存的内容过多,则肯定会直接影响到服务器的性能。所以一般尽可能少设置 application 属性。

3.1.6、pageContext对象的补充

       JSP 中如果要想设置一个 page 范围的属性则一定使用 pageContext 对象,实际上对于整个 JSP 代码,所有的四种属性范围都是可以通过 pageContext 对象进行设置的,因为在此对象中的设置属性方法有两个:
       · public void setAttribute(String name,Object attribute) à 设置的属性默认为 page 范围
· public void setAttribute(String name,Object o,int scope) à 可以指定属性的范围
       |- 在 PageContext 类中提供了以下几个常量:
              |- 表示 page 范围: public static final int PAGE_SCOPE
              |- 表示 request 范围: public static final int REQUEST_SCOPE
              |- 表示 session 范围: public static final int SESSION_SCOPE
              |- 表示 application 范围: public static final int APPLICATION_SCOPE
下面通过 pageContext 对象设置一个 request 范围的属性
RequestScopeDemo04.jsp
<%@page contentType="text/html;charset=GBK"%>
<%@page import="java.util.*"%>
<%
         // 设置两个属性
         pageContext.setAttribute("uname","HELLO",PageContext.REQUEST_SCOPE) ;
         pageContext.setAttribute("udate",new Date(),PageContext.REQUEST_SCOPE) ;
%>
<jsp:forward page="RequestScopeDemo02.jsp"/>
使用的原则:
       · 因为四种属性范围的保存时间不同,所以占用内存的时间也就不同了,能使用 request 就不要使用 session ,一般情况下, request 和 session 两个属性范围使用的频率是最高的。

四种属性范围(重点)相关推荐

  1. JSP中四种属性范围

    在JSP中提供了四种属性的保存范围,所谓属性保存范围,指的就是一个设置的对象,可以在多少个页面中保存并继续使用. 四种属性范围: pageContext      在一个页面中保存属性,跳转之后无效. ...

  2. jsp九大内置对象和四种属性范围介绍

    一般对象需要实例化才可以调用,而JSP的内置对象是不用实例化就可以直接调用的对象. 总共有9个,对应如下表: 序号 对象 类型 1 pageContext javax.servlet.jsp.Page ...

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

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

  4. Position 的四种属性值

    Position和float这两个元素属性非常重要:今天主要来看一看position在定中的作用. 首先Position有四个属性值,分别是static .fixed. relative .absol ...

  5. position的四种属性

    值 描述 static(默认) 默认值.没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明). relative(相对定位) 生成相对定 ...

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

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

  7. mysql隔离级别 简书_数据库事务和四种隔离级别

    什么是事务 事务(Transaction):访问并可能更新数据库中各种数据项的一个程序执行单元(unit),它通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起 ...

  8. (转)android四种动画

    动画类型 Android的animation由四种类型组成 XML中 alpha     渐变透明度动画效果 scale     渐变尺寸伸缩动画效果 translate     画面转换位置移动动画 ...

  9. 2020.8.26广联达笔试第二题——魔法师四种元素平衡(Python)

    Python编程实现,魔法师的四种元素平衡. 题目简述:魔法师有四种属性,当四种属性的值相同时最好.在修炼时,魔法师可以通过将任意两种属性转化为任意一种其他属性,来进行平衡性调整.试问魔法师当前的四种 ...

最新文章

  1. 当对象与原型有相同的属性,调用时的上下文指向问题
  2. 自己实现strstr函数与strchr函数
  3. Android学习——ListView的缓存机制
  4. 新版本xx Chrome等主流浏览器将不再允许关闭点击跟踪
  5. POI读取word文件,(支持HSSF和XSSF两种方式)
  6. 原来Rproj还可以这么使用
  7. 运用大数据助力大发展
  8. python 把函数作为参数 ---高阶函数
  9. CGAffineTransform 获取 旋转的弧度 和 角度 的方法
  10. delphi 按鈕 快捷鍵 ctrl+x 無效_应用日报 | 巧用快捷指令为头像加国旗 ,Price Tag 商城抽奖送 EarPods...
  11. linux下添加定时任务
  12. cocos2d-x 输入框CCEditBox的使用
  13. java applet下载_java applet
  14. LTspice基础教程-004.系统自带仿真库介绍
  15. 支付宝APP支付扫码支付
  16. EgretInspector谷歌浏览器扩展
  17. 全网功能最全的无水印短视频提取工具
  18. Python+Selenium多线程基础微博爬虫
  19. Vue 脚手架搭建目录及文件详解
  20. 【Matlab】彻底清除persistent变量

热门文章

  1. int / int(double); java保留小数
  2. 计算机基础--练习题
  3. GPS是如何定位的?
  4. 2022年阿里云双12服务器活动内容规则汇总及价格表
  5. ps解决导出图片自动裁剪导致的图像位置偏移的问题
  6. eHIDS 一款基于eBPF的HIDS开源工具
  7. (随笔备忘)装系统—— centos7下制作U盘启动盘还是失败待试,换大白菜
  8. c言语或符号怎么输入
  9. 一个微型的操作系统内核 MiniOS
  10. prometheus-community-PushProx介绍