JAVA四大域对象总结

2023-05-16

JAVA四大域对象总结

根据有作用范围由小到大:

  1. page(当前jsp页面)------》page域指的是pageContext.
  2. request(一次请求)—》request域request HttpServletContext
  3. session(一次会话)—》session域session HttpSession
  4. application(当前web应用)—》application域指的是application ServletContext;

之所以他们是域对象,原因是他们都内置了map集合,都有setAttribute和getAttribute方法。

一、PageContext域

1.生命周期

  • 当对JSP的请求开始,当相应结束时销毁。
  • jsp页面被执行,声明周期开始;
  • jsp页面执行完毕,声明周期结束;

2.作用范围:整个JSP页面,是四大作用域中最小的一个。

3.作用
   (1)获取其它八大隐式对象,可以认为是一个入口对象。
   (2)获取其所有域中的数据

pageContext  操作所有域中属性的方法    
public java.lang.Object getAttribute(java.lang.String name,int scope)                   
public void setAttribute(java.lang.String name, java.lang.Object value,int scope)    
public void removeAttribute(java.lang.String name,int scope)          
pageContext 中代表域的常量    
   PageContext.APPLICATION_SCOPE    
   PageContext.SESSION_SCOPE    
   PageContext.REQUEST_SCOPE    
   PageContext.PAGE_SCOPE          

findAttribute方法,在四大域中搜寻属性,搜寻的顺序是page域、request域、session域、application域,从小域到大域开始搜索,如果搜索到就直接获取该值,如果所有域中都找不到,返回一个null(与el表达式不同,此处返回null,对网页是不友好的)
   (3)跳转到其他资源 其身上提供了forward和include方法,简化重定向和转发的操作

二、Request域

1.生命周期
在Service方法调用前由服务器创建,传入service方法。整个请求结束,request生命结束。
用户发送一个请求,开始,服务器返回响应,请求结束,生命周期结束;

2.作用范围:整个请求链(请求转发也存在)

3.作用:在整个请求链中共享数据,经常用到:在servlet中处理好的数据交给JSP显示,此时参数就可以放在Request域中。

三、HttpSession 域

1.生命周期
在第一次调用request.getSession()方法时,服务器会检查是否已经有对应的session,如果没有就在内存中创建一个session并返回。
(1)当一段时间内session没有被使用(默认为30分钟),则服务器会销毁该session。
(2)如果服务器非正常关闭,没有到期的session也会跟着销毁。
(3)如果调用session提供的invalidate(),可以立即销毁session。
用户打开浏览器访问,创建session(开始),session超时或者被声明失效,该对象生命周期结束;

2.作用范围:一次会话。
HttpSession 在服务器中,为浏览器创建独一无二的内存空间,在其中保存会话相关的信息
注意:服务器正常关闭,再启动,Session对象会进行钝化和活化操作。同时如果服务器钝化的时间在session 默认销毁时间之内, 则活化后session还是存在的。否则Session不存在。 如果JavaBean 数据在session钝化时,没有实现Serializable 则当Session活化时,会消失。

四、ServletContext

1.生命周期
当WEB应用被加载进容器创建代表整个WEB应用的ServletContext对象;
当服务器关闭或WEB应用被移除时,ServletContext对象跟着被销毁。

2.作用范围:整个WEB应用。

3.作用
a)在不同Servlet 之间转发
this.getServletContext().getRequestDispatcher("/servlet/Demo10Servlet").forward(request,response);
方法执行结束,service就会返回到服务器,再有服务器去调用目标servlet,其中request会重新创建,并将之前的request的数据拷贝进去。
b)读取资源文件。

1、由于相对路径默认相对的是java虚拟机启动的目录,所以我们直接写相对路径将会是相对于tomcat/bin目录,所以是拿不到资源的。如果写成绝对路径,当项目发布到其他环境时,绝对路径就错了。
为了解决这个问题ServletContext提供了:
this.getServletContext().getRealPath("/1.properties"),给进一个资源的虚拟路径,将会返回该资源在当前环境下的真实路径。        
this.getServletContext().getResourceAsStream("/1.properties"),给一个资源的虚拟路径返回到该资源真实路径的流。

2、当在非servlet下获取资源文件时,就没有ServletContext对象用了,此时只能用类加载器
classLoader.getResourceAsStream("…/…/1.properties"),此方法利用类加载器直接将资源加载到内存中,有更新延迟的问题,以及如果文件太大,占用内存过大。
classLoader.getResource("…/1.properties").getPath(),直接返回资源的真实路径,没有更新延迟的问题。

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

JAVA四大域对象总结 的相关文章

  • Qt6.2.1编译

    我用的是ubuntu20 04 ubuntu只需要按最小需要安装 xff0c 不需要安装系统更新 先更新apt get的源 cd etc apt xff0c 将source list文件内容改为阿里云源 xff1a 添加阿里源 deb ht
  • iOS Swift 运算符错误问题

    1 在Swift中 xff0c 等号两边必须空格隔开 例如下面的代码会报错 xff1a let sum 61 1 43 2 let sum 61 1 43 2 上面报如下错误 xff1a xff1d must have consistent
  • linux下普通用户执行root权限脚本

    1 安装expect yum install y expect 2 示例 a admin切换root用户脚本 span class token shebang important usr bin expect span span class
  • pve-ceph命令行安装

    用这个安装ceph成功 xff0c 如果安装报错可以多试几次 root 64 pve01 etc apt sources list d more ceph list deb http download proxmox com debian
  • 通过反射获取类和父类的属性和属性值

    通过反射我们可以获取到一个类的属性和方法 但获取父类的private的属性却不可以直接获取 需要递归调用superclass来获取属性 SuperClass java public class SuperClass private Stri
  • 利用旧电脑搭建NAS(黑群晖)

    准备工作 硬件 物品描述U盘 2个1个用来安装nas系统 xff0c 一个做成pe盘引导旧电脑启动旧电脑1个用来搭建nas任意可用电脑1个用户调试nas 软件 名称描述芯片无忧查询u盘的PID VIDOSFMount用于引导img映像文件W
  • vue3-elementPlus 大合集

    elementPlus 的 导入 第一步 安装 也可以直接 cdn 导入 npm install element span class token operator span plus span class token operator s
  • Debian用apt-get 安装软件时出现的问题!

    本想安装个搜狗输入法 xff0c 用dpkg命令安装的 xff0c 但这种安装方式不会自动安装依赖 xff0c 结果不仅没装成功 xff0c 以后使用apt get命令总会报下面这种缺少依赖的问题 root 64 debian apt ge
  • Flutter和Rust如何优雅的交互

    前言 文章的图片链接都是在github上 xff0c 可能需要 你懂得 xff1b 本文含有大量关键步骤配置图片 xff0c 强烈建议在合适环境下阅读 Flutter直接调用C层还是蛮有魅力 xff0c 想想你练习C 43 43 xff0c
  • samba服务配置

    Tip xff1a 1 centos7访问win10共享目录时 xff0c 可能需要指定协议版本 xff0c 默认版本过低 可能无法访问 xff1b 参考链接 xff1a http www mamicode com info detail
  • 阿里云网站备案-注销备案的办法

    当我们因为各种原因要注销备案时 xff0c 可能会遇到以下这些问题 那么老魏汇总了相关答案 xff0c 并且列出来给大家参考用 1 注销主体与注销网站的区别 网站备案分成两部分 xff0c 一部分是备案主体 xff08 个人或企事业单位 x
  • nodeJs(多行数据删除)

    nodeJs 多行数据删除 由于要删除多行数据 xff0c 前台就会要传多条数据到后台 xff1b 1 ajax多次发送数据到后台 xff1f 1 一般不会用这种方法 xff0c 我们要避免ajax与后台交互的次数 2 数组的传送 xff1
  • 【洛谷】P1593 因子和

    洛谷P1593 因子和 题目描述 输入两个整数 a 和 b xff0c 求 a b a b a b 的因子和 由于结果太大 xff0c 只要输出它对 9901取模的结果 输入格式 仅一行 xff0c 为两个整数 a 和 b 输出格式 输出一
  • 隐式类型转换

    转换的规则 若参与运算的数据类型不同 xff0c 则先转换成同一类型 xff0c 然后进行运算 所有的浮点运算都是以双精度进行的 xff0c 即使仅含float单精度量运算的表达式 xff0c 也要先转换成double型 xff0c 再作运
  • Android Studio调式手机时提示 device supports but apk only supports armeabi-v7a

    转载来自 https blog csdn net lbj demo article details 81503078 1 核对你手机的 CPU 架构 目前的 Android 支持的架构 CPU架构描述armeabi第5代 ARM v5TE
  • 三种常见的http content-type详解

    介绍 http协议是建立在tcp ip协议之上的应用层协议 xff0c 主要包括三个部分 xff0c 状态行 xff0c 头部信息 xff0c 消息主体 对应一个http请求就是 xff1a 请求行 xff0c 请求头 xff0c 请求体
  • Git用户名/密码/邮箱,及设置git配置

    一 查看信息 xff1a 查看用户名 xff1a git config user name 查看邮箱 xff1a git config user email 查看密码 xff1a git config user password 二 设置信
  • 步进电机梯形加减速

    步进电机梯形加减速 xfeff 1 为什么要使用加减速2 算法原理2 1 特点2 2 概念2 3 公式2 4 脉冲时间间隔计算2 5 加减速度与步数的关系 3 算法理论实现3 1 设置计算3 1 1 最小间隔 min delay3 1 2
  • 11. shell循环 for

    shell循环 for 1 C语言风格的 for 循环2 Python风格的 for in 循环2 1对 value list 的说明2 1 1 直接给出具体的值2 1 2 给出一个取值范围2 1 3 使用命令的执行结果2 1 4 遍历数组
  • 06-链表的基本操作(插入与删除)

    插入与删除 C语言实现 1 利用哨兵简化实现难度2 链表中插入结点3 链表中删除节点4 完整实现 1 利用哨兵简化实现难度 针对链表的插入 删除操作 xff0c 需要对插入第一个结点和删除最后一个结点的情况进行特殊处理 这样代码实现起来就会

随机推荐

  • 24-经典排序算法之 冒泡排序

    冒泡 1 冒泡排序 xff08 Bubble Sort xff09 2 代码实现3 算法分析4 代码优化4 1思路4 2 算法实现 1 冒泡排序 xff08 Bubble Sort xff09 冒泡排序只会操作相邻的两个数据 每次冒泡操作都
  • [Eclipse]-Eclipse下导入外部jar包的3种方式

    Eclipse下导入外部jar包的3种方式 1 最常用的普通操作方式2 快速版的操作方式 用户Jar包式3 快速版的操作方式 文件夹导入式 1 最常用的普通操作方式 右击 项目 选择Properties xff0c 在弹出的对话框左侧列表中
  • 1.FFmpeg(Windows版)安装

    FFmpeg Windows版 官网下载与安装 1 FFmpeg官网 官网地址是 xff1a https ffmpeg org ffmpeg介绍 xff1a https www ffmpeg org about html 关于ffmpeg使
  • 19.Win10安装Linux(Ubuntu 20.04)双系统

    Win10安装Linux xff08 Ubuntu 20 04 xff09 双系统 1 电脑配置2 下载Ubuntu 系统镜像2 1官网地址2 2 阿里2 3 清华源 3 制作U盘启动盘3 1 UltraISO 下载地址3 2 Etcher
  • 22.Ubuntu出现“由于没有公钥,无法验证下列签名”

    由于没有公钥 xff0c 无法验证下列签名 1 无公钥错误2 输入命令导入公钥3 注意 1 无公钥错误 使用sudo apt update时出现以下错误 xff1a 我图中的公钥就是 xff1a 3B4FE6ACC0B21F32 xff08
  • 15. Java字符串操作(StringJoiner)

    字符串操作 xff08 StringJoiner xff09 1 StringJoiner2 在字符串拼接中体验下StringJoiner 3 StringJoiner构造方法4 StringJoiner成员方法5 练习6 总结 1 Str
  • 39.Java-interface接口

    interface接口 1 interface2 接口的定义和使用3 接口中成员的特点4 接口和类之间的关系5 实例6 接口中新增的方法6 1 JDK8以后新增2种方法6 1 1 允许在接口中定义默认方法6 1 2 允许在接口中定义静态方法
  • 修改工单号码的流水号

    The job number is defined by sequence WIP JOB NUMBER S in the database The WIP numbering also uses the prefix defined in
  • 40.java-单列集合Set(HashSet,LinkedHashSet,TreeSet)

    Set集合 1 Set集合特点2 Set集合实现类3 HashSet3 1 底层原理3 1 1 哈希表组成3 1 2 哈希值3 1 3 对象的哈希值特点 3 2 数据添加元素的过程3 3 HashSet的三个问题3 4 实例 xff1a 去
  • 41.Java单列集合LinkedList

    单列集合LinkedList 1 LinkedList集合2 源码3 ArrayList和LinkedList的区别 1 LinkedList集合 在许多情况下 xff0c ArrayList效率更高 xff0c 因为通常需要访问列表中的某
  • hiveh和presto中date_add

    日期增加函数 date add语法 hive gt select date add 2016 12 29 10 presto gt select date add day 1 TIMESTAMP 2014 03 08 09 00 00 ht
  • synchronized关键字

    https tech meituan com 2018 11 15 java lock html https juejin im post 5ae6dc04f265da0ba351d3ff https leejay top posts Sy
  • CAS

    一 CAS简介 比较并交换 compare and swap CAS xff0c 是原子操作的一种 xff0c 可用于在多线程编程中实现不被打断的数据交换操作 xff0c 从而避免多线程同时改写某一数据时由于执行顺序不确定性以及中断的不可预
  • 帧内预测

    转载于 xff1a https www cnblogs com charybdis p 6049108 html 为什么要有帧内预测 xff1f 因为一般来说 xff0c 对于一幅图像 xff0c 相邻的两个像素的亮度和色度值之间经常是比较
  • 找出数组中没有出现的最小正整数

    题目描述 xff1a 给定一个无序整型数组arr 找到数组中未出现的最小整数 例子 arr 61 1 2 3 4 return 1 arr 61 1 2 3 4 return 5 时间复杂度O n 空间复杂度O 1 解题思路 xff1a x
  • 公有云弹性IP的实现原理及优势

    原文链接 xff1a http news west cn 26218 html 在利用公有云服务部署我们的应用时 xff0c 为了访问到我们的服务器 xff0c 我们需要为我们的服务部署公网IP 公有云服务商除了可以为服务器提供固定的公网I
  • vim 怎么取消高亮 或取消选中状态

    原文链接 xff1a https blog csdn net weixin 40539892 article details 78946659 神操作 在vim中编写代码 xff0c 常常会遇到多行注释和取消注释的情况 xff0c 在VS中
  • 工单关联销售订单

    CREATE OR REPLACE TRIGGER CUX WIP DISCRETE JOBS BEFORE INSERT ON INV MTL RESERVATIONS FOR EACH ROW when NEW SUPPLY SOURC
  • P2P(Peer to Peer)对等网络

    P2P xff08 Peer to Peer xff09 对等网络 P2P技术属于覆盖层网络 Overlay Network 的范畴 xff0c 是相对于客户机 服务器 C S 模式来说的一种网络信息交换方式 在C S模式中 xff0c 数
  • JAVA四大域对象总结

    JAVA四大域对象总结 根据有作用范围由小到大 xff1a page 当前jsp页面 page域指的是pageContext request 一次请求 request域request HttpServletContext session 一