JSP九大内置对象及四个作用域

JSP深入开发教程与最佳实践 本文还有配套的精品资源,点击获取 简介:JSP是一种构建动态网页的Java技术,通过将HTML和Java代码的结合,实现Web页面的动态内容展示。文章详细介绍了JSP的核心概念、生命周期、指令、脚本元素,以及九个内置对象。同时,探讨了JSP动作标签、自定义标签库(JSTL)、与Servlet的关系,并提倡使用MVC设计模式进行Web开发。文章最后总结了JSP开发的最佳实践,... 阅读详情

1、out: javax.servlet.jsp.JspWriter类型,代表输出流的对象。作用域为page(页面执行期)

2、request:javax.servlet.ServletRequest的子类型,此对象封装了由WEB浏览器或其它客户端生成地HTTP

请求的细节(参数,属性,头标和数据)。

作用域为request(用户请求期)。


3、response:javax.servlet.ServletResponse的子类型,此对象封装了返回到HTTP客户端的输出,向页面作者提供设置响应头标和状态码的方式。
经常用来设置HTTP标题,添加cookie,设置响应内容的类型和状态,发送HTTP重定向和编码URL。作用域为page(页面执行期)。

4、pageContent:javax.servlet.jsp.PageContext(抽象类)类型,作用域为page(页面执行期)。
此对象提供所有四个作用域层次的属性查询和修改能力,它也提供了转发请求到其它资源和包含其他资源的方法

5、session:javax.servlet.http.HttpSession类型,主要用于跟踪对话。作用域session(会话期—)。

HttpSession是一个类似哈希表的与单一WEB浏览器会话相关的对象,它存在于HTTP请求之间,可以存储任何类型的命名对象。

如果不需要在请求之间跟踪会话对象,可以通过在page指令中指定session="false"
需要记住的是pageContext对象也可以与session.getAttribute(),session.setAttribute()一样的方式取得并设置会话属性。

6、application:javax.servlet.ServletContext类型,servlet的环境通过调用getServletConfig().getContext()方法获得。

作用域是application(整个程序运行期)。它提供了关于服务器版本,应用级初始化参数和应用内资源绝对路径,注册信息的方式

7、config:javax.servlet.ServletConfig,作用域为page(页面执行期)

8、exception:java.lang.Throwable,通过JSP错误页面中一个catch块已经益出但没有捕获的。

9、page:java.lang.Object类型,指向页面自身的方式。作用域为page(页面执行期)


JSP中九大内置对象为: 
request            请求对象                 类型 javax.servlet.ServletRequest        作用域 Request
response          响应对象                   类型 javax.servlet.SrvletResponse       作用域  Page
pageContext    页面上下文对象       类型 javax.servlet.jsp.PageContext      作用域    Page
session            会话对象                   类型 javax.servlet.http.HttpSession       作用域    Session
application       应用程序对象          类型 javax.servlet.ServletContext          作用域    Application
out                   输出对象                   类型 javax.servlet.jsp.JspWriter             作用域    Page
config              配置对象                  类型 javax.servlet.ServletConfig            作用域    Page
page               页面对象                  类型 javax.lang.Object                            作用域    Page
exception        例外对象                 类型 javax.lang.Throwable                     作用域    page


四个作用域:

大概流程是这样的,我们访问04-01/index.jsp的时候,分别对pageContext, request, session,application四个作用域中的变量进行累加。

(当然先判断这个变量是不是存在,如果变量不存在,则要把变量初始化成1。)计算完成后就从index.jsp执行forward跳转到test.jsp。

在test.jsp里再进行一次累加,然后显示出这四个整数来。

从显示的结果来看,我们可以直观的得出结论:

page里的变量没法从index.jsp传递到test.jsp。只要页面跳转了,它们就不见了。

request里的变量可以跨越forward前后的两页。但是只要刷新页面,它们就重新计算了。

session和application里的变量一直在累加,开始还看不出区别,只要关闭浏览器,再次重启浏览器访问这页,session里的变量就重新计算了。

application里的变量一直在累加,除非你重启tomcat,否则它会一直变大。

而作用域规定的是变量的有效期限。

如果把变量放到pageContext里,就说明它的作用域是page,它的有效范围只在当前jsp页面里。

从把变量放到pageContext开始,到jsp页面结束,你都可以使用这个变量。

如果把变量放到request里,就说明它的作用域是request,它的有效范围是当前请求周期。

所谓请求周期,就是指从http请求发起,到服务器处理结束,返回响应的整个过程。在这个过程中可能使

用forward的方式跳转了多个jsp页面,在这些页面里你都可以使用这个变量。

如果把变量放到session里,就说明它的作用域是session,它的有效范围是当前会话。

所谓当前会话,就是指从用户打开浏览器开始,到用户关闭浏览器这中间的过程。这个过程可能包含多个

请求响应。也就是说,只要用户不关浏览器,服务器就有办法知道这些请求是一个人发起的,整个过程被

称为一个会话(session),而放到会话中的变量,就可以在当前会话的所有请求里使用。

如果把变量放到application里,就说明它的作用域是application,它的有效范围是整个应用。

整个应用是指从应用启动,到应用结束。我们没有说“从服务器启动,到服务器关闭”,是因为一个服务

器可能部署多个应用,当然你关闭了服务器,就会把上面所有的应用都关闭了。

application作用域里的变量,它们的存活时间是最长的,如果不进行手工删除,它们就一直可以使用。

与上述三个不同的是,application里的变量可以被所有用户共用。如果用户甲的操作修改了application

中的变量,用户乙访问时得到的是修改后的值。这在其他scope中都是不会发生的,page, request,

session都是完全隔离的,无论如何修改都不会影响其他人的数据。

我们使用public Object getAttribute(String name)获得变量值,使用public void setAttribute

(String name, Object value)将变量值保存到对应作用域中。举个pageContext的例子就是:

// page
Integer countPage = (Integer) pageContext.getAttribute("countPage");
if (countPage == null) {
    pageContext.setAttribute("countPage", 1);
} else {
    pageContext.setAttribute("countPage", countPage + 1);
}
这里先从pageContext中取出名为countPage的整数,因为返回的都是java.lang.Object类型,所以需要强

制转换成我们需要的整形。这里取得的变量如果不存在就会返回null,通过判断countPage == null来辨

别变量是否存在,如果不存在就设置为1,如果存在就进行累加,最后使用setAttribute()方法将修改后

的变量值放入pageContext。

将其中的pageContext换成request, session, application就可以操作其他三个作用域中的变量。



Nvidia Jetson 编解码开发(3)解决H265解码报错“PPS id out of range” 基于之前的开发程序通过Jetson Xavier NX 硬编码的H265发出后,上位机断点播放发出来的H265码流,会报“PPS id out of range” 错误。 阅读详情

相关推荐

Nacos2.X 源码分析:为订阅方推送、服务健康检查、集群数据同步、grpc客户端服务端初始化

而Nacos2.X 从http请求改为了grpc请求的方式了,在健康检查这方面就是基于长连接来实现的。客户端发送心跳是在构建grpc连接时会有一个线程每隔5s发送一次,NacosClient端发送心跳的代码在。我们能大致猜测:当一个服务的实例进行了更新,那么是不是应该推送给所有订阅了该服务的客户端?当我订阅了某个服务,是不是应该将该服务信息推送给我?在服务实例检查检查流程中,如果出现了要注销的服务实例就会发布。在服务发现时,进行订阅服务的最后会发布一个。服务注册与服务订阅流程中发布的事件最终会被。

qq_44027353的博客 1593

在LN项目中熟悉jsp

这次项目的主要任务是用jsp做界面,下面模块由filenet完成无需我们进行参与,我们只需要保证给用户一个比较美观,比较可靠地界面层就好。工欲善其事必先利其器,初步画界面采用Dreamweaver,后期写代码的时候如果页面需要微调就直接在eclipse里面编辑。界面整体来看还是非常非常不错滴,做页面的四人组就是给力啊。页面做好了就是后面搞定servlet部分了,在写后台的过程中渐渐熟悉了jsp...

网站开发初中级代码参考-转载 135

手把手教你用Cadence Virtuoso完成LNA全套仿真:基于SpectreRF手册的实战补充

本文详细指导如何使用Cadence Virtuoso和SpectreRF完成LNA的全套仿真,涵盖噪声仿真、增益压缩、THD分析及双音IP3测量等关键步骤。针对官方手册中的常见问题,提供了12个实战解决方案,包括hbnoise函数选择、双音信号源配置等,帮助工程师高效完成射频IC设计。

weixin_29102619的博客 519

jsp四大作用域和九大内置对象

jsp是运行在服务端的程序 JSP有九个内置对象(又叫隐含对象),不需要预先声明就可以在脚本代码和表达式中随意使用 JSP九大内置对象分为四类: 输入输出对象:out对象、response对象、request对象 通信控制对象:pageContext对象、session对象、application对象 Servlet对象:page对象、config对象 错误处理对象:exception...

mike_jun的博客 2万+

创龙 瑞芯微 RK3588 国产工业开发板—Qt交叉编译环境搭建与GPU图形渲染实战

本文详细介绍了在创龙RK3588国产工业开发板上搭建Qt交叉编译环境并利用GPU进行图形渲染的完整实战流程。文章从环境准备入手,讲解了交叉编译工具链的配置,并提供了命令行与Qt Creator两种编译方法。通过部署运行和自启动设置,确保程序在板卡上稳定运行。最后,通过OpenGL案例实战,展示了如何调用RK3588的GPU进行高效图形渲染,释放其图形处理潜力,适用于工业HMI、智能终端等高要求图形界面开发。

weixin_28278377的博客 448

Halcon Socket TCP通讯:从算子调用到工业视觉系统集成

本文详细介绍了Halcon Socket TCP通讯在工业视觉系统中的应用与优化技巧。从基础算子调用到高并发处理,再到与PLC、机器人及MES系统的集成实战,提供了全面的解决方案和性能优化建议,帮助开发者高效实现工业视觉系统的通讯需求。

weixin_33502772的博客 248

java 的9大作用域_JSP的9大内置对象和4大域对象(作用域)

九大内置对象内置对象(又叫隐含对象,有9个内置对象):不需要预先声明就可以在脚本代码和表达式中随意使用JSP中九大内置对象为:pageContext页面上下文对象 类型 javax.servlet.jsp.PageContext 作用域 Pagerequest 请求对象   类型 javax.servlet.ServletRequest 作用域 Reques...

weixin_30375113的博客 427

python基础:工作会用到的90%的python代码都在这了(万字详解!)

Python 备忘单是 Python 3 编程语言的单页参考表 著名的“Hello World”程序在 Python 中的实现 Python 不能在没有赋值的情况下声明变量 变量可以存放不同类型的值 内置数据类型 序列指一批有序的元素,集合指一批无序且不重复的元素查看: 数据类型 查看: 字符串 查看: 列表 查看: 判断 查看: 循环 查看: 函数 查看: 文件处理 表示 x 和 y 的商, 表示 x 和 y 的底商,另见 StackOverflow f-字符串 (Python 3.6+) 查看

数据知道的博客 1万+

JSP九大作用域

jsp的九大作用域: request 请求对象  类型 javax.servlet.ServletRequest 作用域 Request response 响应对象 类型 javax.servl...

chuanleimeng7826的博客 332

CVE-2021-22205 GITLAB 未授权 RCE 漏洞

简介 GitLab是由GitLab Inc.开发的一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,可通过Web界面访问公开或私人项目。由于GitLab存在未授权的端点,导致该漏洞在无需进行身份验证的情况下即可进行利用。 漏洞利用 上工具 python3 poc import sys import requests from bs4 import BeautifulSoup requests.packages.urllib3.disable_warnings() def .

qq_32445755的博客 885

29、集成电路测试技术解析

本文深入解析了集成电路测试技术,涵盖定制电路测试资源与策略、混合模拟/数字电路测试方法、数字测试模式生成难点与解决方案,以及可控性和可观测性的核心概念。同时详细讨论了固定故障、桥接故障和开路故障等主要故障模型及其检测方法。在测试技术的综合应用与优化方面,提出了合理配置测试资源、优化测试模式和设计测试流程的策略。最后展望了测试技术的发展趋势,包括集成化测试、自动化测试和智能化测试。通过全面掌握这些测试技术,可以有效提高集成电路的质量和可靠性,推动集成电路产业的发展。

work3的博客 203

JSP 九大内置对象及四个作用域详解

JSP中一共预先定义了9个内置对象:内置对象,又叫做隐含对象,不需要预先声明就可以在脚本代码和表达式中随意使用 request、response、session、application、out、pagecontext、config、page、exception request 请求对象  类型 javax.servlet.ServletRequest...

梦和远方的博客 3万+

PyTorch生成式人工智能(25)——基于Transformer实现机器翻译

不同于循环神经网络 (RNN) 按顺序处理数据,Transformer 以并行的方式处理输入数据(例如句子)。这种并行处理提高了效率,但并未使其能够识别输入的顺序。为了解决这个问题,Transformer 向输入的词嵌入中添加了位置编码。这些位置编码是分配给输入序列中每个位置的独特向量,其维度与输入词嵌入对齐。本节将以英语到法语的翻译为例,通过介绍如何训练 Transformer 模型将英语句子转换为法语,深入理解 Transformer 的架构及自注意力机制的运作方式。

盼小辉丶的博客 2702

JSP的九大内置对象和四个作用域

JSP的九大内置对象和四个作用域 JSP的九大内置对象: page,application,session,request,response,out,exception,config,pageContext. JSP的四个作用域:application,session,request,page.application作用域就是服务器启动到关闭的整段时间,在这个作用域内设置的信息可以被所有应用

yungcs的专栏 9408

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Jsp九大内置对象及四个作用域

一、九大对象:内置对象:又叫隐含对象,不需要预先申明就可以在脚本代码和表达式中随意使用。

young_kim的技术博客 2219

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

JSP九大内置对象及四个作用域介绍

JSP九大对象: 内置对象(又叫隐含对象,有9个内置对象):不需要预先声明就可以在脚本代码和表达式中随意使用1-out:javax.servlet.jsp.JspWriter类型,代表输出流的对象。作用域为page(页面执行期)request:javax.servlet.ServletRequest的子类型,此对象封装了由WEB浏览器或其它客户端生成地HTTP请求的细节(参数,

源头活水 702

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

JSP九大内置对象及四个作用域总结

九大对象:   内置对象(又叫隐含对象,有9个内置对象):不需要预先声明就可以在脚本代码和表达式中随意使用   1-out:   javax.servlet.jsp.JspWriter类型,代表输出流的对象。作用域为page(页面执行期)   request:javax.servlet.ServletRequest的子类型,此对象封装了由WEB浏览器或其它客户端生成地HTT

xuyajun123456的专栏 1153
上一篇: jsp 中文乱码
下一篇: jsp中forward和redirect的区别
andyLiuJava
博客等级 码龄14年 0粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值