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

2023-05-16

内置对象和属性范围

四种属性范围

九个内置对象

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java ee 值范围_JAVAEE之内置对象和属性范围 的相关文章

随机推荐

  • 服务器只显示一个登陆用户,远程服务器只允许1个用户登入设置

    远程服务器只允许1个用户登入设置 内容精选 换一换 已成功添加Guardian 如果Guardian处于在线状态 xff0c 只允许修改Guardian名称 如果Guardian处于连接超时状态 xff0c 可以输入登录远程服务器的用户名和
  • 关于mysql联合索引的一道简单笔试题与思考

    最近做了一道关于mysql联合索引的题 具体的题目个人的收获参考的链接索引的那些事 具体的题目 答案 xff1a 1 四个字段均使用了该索引 2 c1 xff0c c2字段使用了该索引 3 c1字段使用该索引 4 c1字段使用该索引 5 c
  • 目前spring阶段一些有用得文章

    自己写给自己看当作笔记 SpringBoot自动配置原理是什么 https www cnblogs com chenweichu p 12663798 html 1 在 64 SpringBootApplication中有一个注解 64 E
  • 面试常问的事情与题目

    随便给份工作我吧 提示 xff1a 面试多总结一下经验 xff0c 抓重点 xff0c 而不是什么都想准备好 其实自己就是一个菜狗 xff0c 备考了半年 xff0c 什么鸡儿都忘记了 xff0c 从零开始 文章目录 前言一 基本流程大概二
  • 我的常用基础指令

    docker相关 run it ubuntu span class token function bash span i 是以交互式的方式启动 t 是以终端的形式启动 p 映射端口号 xff1a 原始端口号 指定端口号启动 例 xff1a
  • vue jqurey 等前端常用

    vue components 注册组件 如 xff1a span class token keyword import span SelectDict span class token keyword from span span clas
  • 《Linux 内核完全注释》阅读笔记

    在阅读源代码之前 xff0c 有必要对Linux内核的体系结构 源代码的目录结构有个宏观地了解 xff0c Linux内核完全注释 非常详细地介绍了这方面的内容 xff0c 所以 这里仅仅进行概述性的讨论 xff0c 以便让所有的笔记构成一
  • 关于Java-stream的一下日常使用

    惰式执行 对 stream的操作并不会立即执行 如果用户真正需要的时候才会执行 span class token class name Stream span span class token punctuation span span c
  • 怎么获取别人服务器信息失败,获取服务器信息失败

    获取服务器信息失败 内容精选 换一换 1 若希望以主席身份入会 xff0c enter code必须传入主席密码 若希望以来宾身份入会 xff0c 当会议要求来宾密码时 xff0c enter code必须传入来宾密码 xff0c 会议不要
  • 我的世界服务器合成表修改,【组件教程】行为包03:修改合成表

    大家好我是那个谁 xff0c 今天为大家带来组件系列教程的第三课 xff0c 在上一课中我们对于掉落物进行了详细的讲解 xff0c 这一课中我们要把目光看向我的世界另一重要玩法组成部分 xff1a 合成 打开原版行为包中recipes文件夹
  • liunx 全盘查找_linux查找文件命令find怎么用

    linux查找文件命令find怎么用 Linux 文件搜索命令find的操作使用方法如下 xff1a 1 全盘搜索 xff0c 也可以指定目录搜索 find 搜索目录 name 目标名字 xff0c find name file 2 这样搜
  • 程序员的成长之路:回顾初心,质疑自我

    经过3 4年的成长期 xff0c 你说日常写代码无压力 xff0c 代码质量也可以 xff0c 完成日常工作后 xff0c 就不知道做什么 xff1f 如果现在的你正好是这么一种状态 xff0c 想提升却不知道往哪走 xff1f 那你一定进
  • CentOS 7中安装Oracle JDK

    1 前往Oracle官网http www oracle com technetwork java javase downloads index html下载JDK xff0c 这里我们选择rpm包 xff08 注意 xff1a 下载前须接受
  • 给android程序添加页面,向 Android 应用中添加闪屏页和启动页

    向 Android 应用中添加闪屏页和启动页 开启 Flutter 的体验需要短暂地等待 Dart 的初始化 一个完整的 Flutter 应用还额外需要 Android 应用程序标准的初始化时间 Flutter 支持在 Android 应用
  • ArchLinux必备命令记录(manjaro)

    1 添加新账户 useradd username新建账户 useradd d home xxx m xxx创建用户 xff0c 并同时生成用户目录 xff0c 不然账户无法正常启用 passwd username修改密码 userdel f
  • js使用lottie读取json文件并修改文件参数后渲染

    js使用lottie读取json文件并修改文件参数后渲染 1 效果图 说明 xff1a 车辆模型是通过json文件渲染的 2 代码 2 1 引入lottie js xff08 如果没有 xff0c 网上资源很多 xff0c 请自行下载 xf
  • Mybatis基础+增删改查(代码示例)

    目录 Mybatis基础 43 增删改查 xff08 代码示例 xff09 首先什么是MyBatis xff1f MyBatis中文文档 xff08 学习参考资料 xff09 xff1a MyBatis 基础框架搭建源码 xff1a MyB
  • KVM虚拟化工具简介及安装

    1 KVM简介 Kernel based Virtual Machine的简称 xff0c 是一个开源的系统虚拟化模块 xff0c 自Linux2 6 20之后集成在Linux的各个主要发行版本中 它使用Linux自身的调度器进行管理 xf
  • 按键消抖

    按键消抖 按键是FPGA实验工程中常见的电子元器件 xff0c 通常用作系统复位信号或者控制 外部信号的输入 按键消抖主要针对的是机械弹性开关 xff08 按下去 xff0c 一旦松开就会弹上去 xff09 xff0c 当机械触点断开 闭合
  • java ee 值范围_JAVAEE之内置对象和属性范围

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