内置对象和属性范围

四种属性范围

九个内置对象

1.内置对象

如果说想要使用一个对象,必须new 出来,但是在我们的jsp操作中,发现我们使用过的out,request对象没有进行实例化,类似于这样的对象,我们叫做jsp的内置对象,也就是收不需要实例化的对象,总共有9个。

序号

对象

类型

1

pageContext

javax.servlet.jsp.PageContext

2

request

javax.servlet.http.HttpServletRequest

3

response

javax.servlet.http.HttpServletResponse

4

session

javax.servlet.http.HttpSession

5

application

javax.servlet.ServletContext

6

config

javax.servlet.ServletConfig

7

out

javax.servlet.jsp.jspWriter

8

page

java.lang.Object

9

exception

java.lang.Throwable

2.属性范围

在jsp中,有四种属性范围,所谓属性范围,就是指在一个jsp中设置了属性,是否可以在其他页面能够访问。四种属性范围分别指的是以下的四种:

·属性范围在当前页面有效:设置了一个属性,在设置属性的页面可以取得属性,跳转到其他页面则无法取得设置的属性

·属性范围在服务端跳转范围内有效:一个页面设置了属性,然后经过服务端跳转(n次),依然可以取得设置的属性

·属性范围在一次会话中有效:一个页面设置属性,无论是经过服务端还是客户端跳转,只要浏览器不重启,设置的属性都可以取得。

·属性范围在服务器上下文中有效:页面设置的属性,无论是经过客户端还是服务端跳转,无论是哪一个会话,只要服务器不重启,设置的属性都可以访问。

NO

方法

描述

1

public void setAttribute(String name,Object val)

设置属性

2

pulblic Object getAttribute(String name)

取得属性

3

public void removeAttribute(String  name)

删除属性

2.1page属性范围

page属性范围也就是我们上面所提到的第一种属性范围,使用的是pageContext这个内置对象设置和取得的,指的是在一个页面使用pageContext设置了属性之后,本页面可以通过pageContext取得设置的属性,跳转到其他页面之后无法取得设置的属性。要注意的一点,所谓的page属性范围使用的是pageContext这个内置对象设置和取得的。

//设置属性

pageContext.setAttribute("company","厦门");

pageContext.setAttribute("address","厦门市");

pageContext.setAttribute("tel","0592-2565166");%>

如果现在我们通过服务端跳转,看能不能取得设置的属性

这是pageAttributeDemo02.jsp

发现我们通过服务端跳转后取不到之前设置的page范围的属性了,如果说想要通过服务端跳转后也能取得设置的属性,我们必须使用第二种属性范围。

2.2request属性范围

request属性范围,是第二种属性范围,也就是说设置的属性在当前页面可以取得,通过服务端跳转之后也可以取得设置的属性。

//设置属性

request.setAttribute("company","厦门");

request.setAttribute("address","厦门市");

request.setAttribute("tel","0592-2565166");%>

这是pageAttributeDemo02.jsp

通过

//设置属性

request.setAttribute("company","厦门");

request.setAttribute("address","厦门");

request.setAttribute("tel","0592-2565166");%>

现在,我们发现,request范围属性经过多次跳转之后,依然可以取得设置的属性,那么现在如果经过客户端跳转呢?

//设置属性

request.setAttribute("company","厦门");

request.setAttribute("address","厦门");

request.setAttribute("tel","0592-2565166");%>

客户端跳转

这是requestAttributeDemo03.jsp

通过程序运行结果发现,通过客户端跳转不能够取得设置的request范围的属性,那么如果现在我就想要通过客户端取得设置的属性呢?那么我们可以使用第三种范围属性。

3.session

session属性范围就是我们第三种属性范围,也就是之前提到过的,属性范围在一次会话中有效。是无论经过客户端还是服务端跳转,都可以取得设置的属性,当然前提是浏览器不能重启。

//设置属性

session.setAttribute("company","厦门");

session.setAttribute("address","厦门");

session.setAttribute("tel","0592-2565166");%>

客户端跳转

02

03

以上的程序说明我们session范围的属性,在经过客户端或者服务端跳转之后,设置的属性依然可以取得。现在我们来重启一下浏览器:通过操作发现,重启浏览器之后,取不到设置的session范围属性了,那么如果现在想要在浏览器重启后取得设置的属性,我们必须使用第四种属性范围。

4.application属性范围

application范围属性就是第四种范围属性,属性是设置在服务器的上下文中,只要服务器不重启,那么设置的属性统统都可以取得。无论是经过客户端你还是服务端还是浏览器重启,都可取得设置的属性。

//设置属性

application.setAttribute("company","厦门");

application.setAttribute("address","厦门");

application.setAttribute("tel","0592-2565166");%>

客户端跳转

03

设置的application范围的属性,无论是通过客户端还是服务端或者浏览器重启,都可以取得设置的属性。那么现在如果服务器重启呢?通过操作发现,重启服务器后,之前设置的属性取不到了,那么如果想要在重启服务器后取得设置的属性呢?那是没有办法的。

3.属性范围使用说明

在开发中,我们常用的属性范围就是request和session范围,那么在开发中,怎么区分使用二者呢?一般来说,只对于同一个功能的属性的传递,使用request范围属性。那么对于session范围来说,主要还是用于登陆上面。

4.关于pageContext属性的进一步说明

上面我们讲解的是四种属性范围,实际上四种属性范围都是通过pageContext设置的,在pageContext中,setAttribute()方式实际上被重载过:

·设置属性:

·public abstract void setAttribute(java.lang.String name,  java.lang.Object value)

·public abstract void setAttribute(java.lang.String name,

java.lang.Object value,

int scope)

对于这两个方法,第一个方法是我们之前一直在使用的,对于第二个方法,相比第一个方法多了一个参数(int scope),实际上这个参数就是指定属性范围的参数:

·APPLICATION_SCOPE

·PAGE_SCOPE

·SESSION_SCOPE

·REQUEST_SCOPE

也就是说,通过这个方法,我们可以设置四种属性范围。

跳转

02

总结,知道九个内置对象(pageContext,session,request,response,applicatino,config,page,exception),充分掌握四种属性范围(page仅对于自己的页面传值;request应用于服务端传值,但是客户端跳转不能传值;session一般应该于用户的登录注册保存在一次会话中,会话结束,属性值消失;application属性范围应用于整个服务器中,服务器关闭属性值消失。

java ee 值范围_JAVAEE之内置对象和属性范围相关推荐

  1. 【转载】JAVAEE之内置对象和属性范围

    原文:JAVAEE之内置对象和属性范围 内置对象和属性范围 ​ 四种属性范围 ​ 九个内置对象 1.内置对象 如果说想要使用一个对象,必须new 出来,但是在我们的jsp操作中,发现我们使用过的out ...

  2. java ee 值范围_【转载】JAVAEE之内置对象和属性范围

    内置对象和属性范围 ​ 四种属性范围 ​ 九个内置对象 1.内置对象 如果说想要使用一个对象,必须new 出来,但是在我们的jsp操作中,发现我们使用过的out,request对象没有进行实例化,类似 ...

  3. java ee 值范围_javaEE四大作用域(共享域)

    https://www.cnblogs.com/huifeidezhuzai/p/10883953.html 作用域------顾名思义,起作用的大小范围也!如果是你自己去学习一个知识点,你要达到哪些 ...

  4. java自定义变量解析,Thymeleaf内置对象、定义变量、URL参数及标签自定义属性

    如标题所述,这篇文章主要讲述Thymeleaf中的内置对象(list解析.日期格式化.数字格式化等).定义变量.获取URL的参数和在页面标签中自定义属性的应用. 如果对Thymeleaf的基本使用.m ...

  5. java ee 值范围_一篇文章带你读懂: Java EE

    原标题:一篇文章带你读懂: Java EE 点击上图,查看教学大纲 何为 Java EE Java EE是一个标准中间件体系结构 不要被名称"Java PlatformEnterprise ...

  6. JAVA Web入门之JSP内置对象的解析及使用(超详细必看)

    创作不易 觉得有帮助请点赞关注收藏~~ 概述:由于JSP使用java作为脚本语言 所以JSP具有强大的对象处理能力 并且可以动态创建web页面内容 但java语言在使用一个对象前  需要先实例化这个对 ...

  7. java ee jsp程序_JavaEE——jsp介绍

    声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权:凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记. jsp介绍: jsp全称Java Server Page,它 ...

  8. JSP之内置对象、作用域

    >九大内置对象包括: 四个域:application.session.request.pageContext response:响应 out:输出流 exception:只能在错误页面进行输出 ...

  9. JS学习笔记之内置对象 4.21

    1 内置对象 JavaScript 中的对象分为3种:自定义对象 .内置对象. 浏览器对象 内置对象就是指 JS 语言自带的一些对象,这些对象供开发者使用,并提供了一些常用的或最基本而必要的功能(属性 ...

最新文章

  1. 【Qt】Qt发布程序时,报错: could not find or load the Qt platform plugin xcb
  2. 【题解】已经没有什么好害怕的了
  3. 谁是谁的first-child
  4. 用PHP写一个最简单的解释器Part1
  5. python selenium_自动化测试:Selenium+Python环境搭建
  6. EditorMD + handsome 编辑器插件整合
  7. 002redis常用的数据结构
  8. 单片机音乐芯片c语言程序,51单片机驱动MT8880双音频接收发送芯片C语言程序分享...
  9. K8S使用filebeat统一收集应用日志
  10. Django2.0异常:'Specifying a namespace in include() without providing an app_name '
  11. 苹果mac专业的音乐制作软件:Logic Pro X
  12. Python使用hashlib模块生成给定文本数据的签名摘要信息(包括各种哈希函数)
  13. Adobe reader 的书签问题
  14. GitLab针对关键账户接管漏洞发布安全补丁
  15. 悟空,削他!善了个哉的……
  16. postman和newman
  17. 中国天眼新发现登Nature封面:恒星形成速度比我们想象快10倍
  18. 岂止于网络 xNet的应用交付逆袭之路
  19. 活字格对接RF手持机与ERP系统,帮助RFID快速盘点方案落地
  20. 武汉高职高专计算机专业分数线,武汉职业技术学院录取投档线

热门文章

  1. 作业调度C语言编写,【作业调度方案】 (C语言代码)
  2. mysql 64位 安装1045_MySql 安装时的1045错误
  3. java poi生成excel文件_java poi 导出Excel文件
  4. Gitee 答疑:为什么从 Gitee 平台 Pull 代码到 STS/Eclipse 后文件乱码?逐步排查
  5. c语言2048项目报告,c语言----项目_小游戏2048
  6. 显卡、显卡驱动、CUDA、CUDA Toolkit、cuDNN 梳理
  7. java堆内存 数据结构_JAVA内存区域
  8. php二进制保存到本地,C# 将二进制字符串保存到本地
  9. ubuntu 改屏幕分辨率命令_Ubuntu被曝严重漏洞!!!
  10. 说说python程序的执行过程_表示说的词语