java ee 值范围_JAVAEE之内置对象和属性范围

内置对象和属性范围

四种属性范围

九个内置对象

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属性范围应用于整个服务器中,服务器关闭属性值消失。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/536880.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaWeb学习笔记(九)--HttpServletResponse

web服务器接收到客户端的HTTP请求,会针对每一次请求,分别创建一个用于代表请求的request对象和代表响应的response对象。 request和response对象既然代表请求和响应,那我们要获取客户端提交过来的数据,只需要找request对象即可。要…

java html5 上传_HTML5结合ajax实现文件上传以及进度显示

基于原生html5实现,不需要falsh支持,进度可以自定义显示,控制灵活, 本来打算使用jquery插件进行异步文件上传,比如uploadfy但是需要额外的支持,也有人用iframe模仿异步上传机制,感觉都比较别扭。…

7天玩转机器学习

7天玩转机器学习 人工智能时代,数据迎来大爆发,数据对于提升业务价值的重要性与日俱增。但面对海量数据,传统分析方法已经显得无能为力,而机器学习的成熟为企业带来了强大的分析引擎,可在众多领域帮助企业挖掘数据价值…

centos 6.5 yum java_Centos6.5 yum 安装jdk1.8

centos 6.5 安装卸载jdk-- 查看有没有预装jdk版本java -version-- 查看已安装的版本rpm -qa|grep java-- 卸载预装版本 rpm -e --nodeps 命令卸载rpm -e --nodeps java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64-- 查找可以安装的jdk列表yum search java | grep -i --color J…

java 中使用mongodb_mongodb在java中的使用

agg Aggregation.newAggregation(Aggregation.match(new Criteria().andOperator(Criteria.where("timeStamp").lte(TypeChange.dateToLong(times[1])).gte(TypeChange.dateToLong(times[0])),new Criteria().orOperator(ruleCr))),//筛选符合条件的记录Aggregation…

一次面试总结(记录)

1,从一个数组里找重复出现次数最多的一个数?2,常用的linux命令3.垃圾收集器有哪些 ?垃圾收集算法?4,线上服务器变慢了你是如何定位问题并处理的?5,你自己实现一个本地缓存,淘汰最久未使用,你怎么设计6,用栈实现计算器7,剔除二叉树…

java 累加 0-9 a-z_JAVA获得包含0-9、a-z、A-Z范围内字符串的的随机数实例

一、获得0-9,a-z,a-z范围的随机字符串/*** java获得0-9,a-z,a-z范围的随机数* param length 随机数长度* return string*/public static string getrandomchar(int length) {char[] chr {0, 1, 2, 3, 4, 5, 6, 7, 8, 9,a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r,…

【PHP 扩展开发】Zephir 基础篇

上一篇 《Zephir 简介》 简单介绍了环境搭建,编写了一个的简单示例。这一篇继续介绍 Zephir 基础。 基本语法Zephir 中,每个文件都必须有且只有一个类,每个类都必须有一个命名空间,目录结构必须与所使用的类和命名空间的名称相匹配…

java常见排序算法有哪些_Java中常用的6种排序算法详细分解

排序算法很多地方都会用到,近期又重新看了一遍算法,并自己简单地实现了一遍,特此记录下来,为以后复习留点材料。废话不多说,下面逐一看看经典的排序算法:1. 选择排序选择排序的基本思想是遍历数组的过程中&…

python range函数

这个函数很简单,就不写例子了,看看语法,拿来即用 python range() 函数可创建一个整数列表,一般用在 for 循环中。 函数语法 range(start, stop[, step]) 参数说明: start: 计数从 start 开始。默认是从 0 开始。例如ra…

java tomcat重启linux_Linux下tomcat重启

进入Tomcat下的bin目录cd/user/local/tomcat/bin关闭tomcat./shutdown.sh查看tomcat是否关闭ps -ef|grep java显示以下信息,则Tomcat还未关闭root 7010 1 0 Apr19 ? 00:30:13 /usr/local/java/bin/java -Djava.util.logging.config.file/usr/loca…

左偏树 P3377【模板】左偏树(可并堆)

题目传送门 代码&#xff1a; /* code by: zstu wxk time: 2019/03/01 */ #include<bits/stdc.h> using namespace std; #define Fopen freopen("testdata.in","r",stdin); freopen("_out.txt","w",stdout); #define LL long lo…

lock 线程 java_JAVA多线程-基础Lock Condition 并发集合

跟上一篇文章比较,这次改进了之前的代码,使用了Lock Condition 和并发集合.代码量减了一些,并且更加容易读了.这篇代码是上一篇的改进版,逻辑在前篇有说明,以防大家看不到,我再重现贴一遍.后续会使用高阶的线程工具再次改进,以求代码更简单.代码的逻辑:1)SProducer不停的产生nu…

mycat mysql ha 方案_7、基于 HA 机制的 Mycat 高可用--mycat

在实际项目中&#xff0c;Mycat 服务也需要考虑高可用性&#xff0c;如果 Mycat 所在服务器出现宕机&#xff0c;或 Mycat 服务故障&#xff0c;需要有备机提供服务&#xff0c;需要考虑 Mycat 集群。1、 高可用方案使用 HAProxy Keepalived 配合两台 Mycat 搭起 Mycat 集群&a…

爬虫scrapy模块

首先下载scrapy模块 这里有惊喜 https://www.cnblogs.com/bobo-zhang/p/10068997.html 创建一个scrapy文件 首先在终端找到一个文件夹 输入 scrapy startproject jy (项目件名) 修改setting文件配置 # Crawl responsibly by identifying yourself (and your website) on the us…

python canvas画移动物体_如何实现Canvas图像的拖拽、点击等操作

上一篇Canvas的博文写完后&#xff0c;有位朋友希望能对Canvas绘制出来的图像进行点击、拖拽等操作&#xff0c;因为Canvas绘制出的图像能很好的美化。好像是想做炉石什么的游戏&#xff0c;我也没玩过。Canvas在我的理解中就好像在一张画布上绘制图像&#xff0c;它只能看到却…

Git基础知识教程整理(Git基本操作)

Git简介 Git是目前世界上最先进的分布式版本控制系统&#xff08;没有之一&#xff09;。Linux之父Linux用C语言写了Git分布式版本控制系统。 分布式版本控制系统与集中式版本控制系统的区别 区别分布式集中式中央服务器有&#xff0c;版本库集中存放在中央服务器&#xff0c;工…

python plot map_使用matplotlibbasemap在边界打印

我在绘制多边形时遇到了困难&#xff0c;例如&#xff0c;在使用matplotlib basemap生成的地图边界上绘制多边形。在下面的示例中&#xff0c;地图边界由日期线指定。我试图通过指定三角形顶点的坐标来绘制一个跨越日期线的三角形。当所有的坐标都在地图内时&#xff0c;这种方…

SQL查询语句 group by后, 字符串合并

合并列值 --******************************************************************************************* 表结构&#xff0c;数据如下&#xff1a; id value ----- ------ aa bb aaa bbb ccc 需要得到结果&#xff1a; id values ------ ----------- aa,bb aaa…

Git 基础 —— 常用命令

Git 基础学习系列 Git 基础 —— 安装 配置 别名 对象Git 基础 —— 常用命令Git 基础 —— 常见使用场景Git基础 —— Github 的使用git init 创建 Git 本地仓库 远端无仓库&#xff0c;本地无仓库&#xff0c;本地新建一个仓库 git init git_learning 远端有仓库&#xff0c;…