问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

jsp的9个内置对象和4个作用域有哪些?

发布网友 发布时间:2022-04-20 08:04

我来回答

2个回答

懂视网 时间:2022-04-20 12:25

JSP内置对象作用域

application:在所有应用程序中有效,即只要这个网站运行着,这个作用域就有效,这个指的程序的运行过程。

session:在当前会话中有效,即从浏览器访问服务器开始,这个指的是用户的一个访问过程,即这次会话的开始到结束

request:在当前请求中有效,负责多个servlet之间的信息共享,即将信息放入到request中,在整个请求阶段都是有效的,即用户访问的这个阶段都可以获取到这个数据

page:在当前页面有效,即在一个jsp页面上是有效的。

首先要声明一点,所谓"作用域"就是"信息共享的范围",也就是说一个信息能够在多大的范围内有效。

Web交互的最基本单位为HTTP请求。每个用户从进入网站到离开网站这段过程称为一个HTTP会话,一个服务器的运行过程中会有多个用户访问,就是多个HTTP会话。作用域解释如下。

application:服务器启动到停止这段时间。

session:HTTP会话开始到结束这段时间。

request:HTTP请求开始到结束这段时间。

page:当前页面从打开到关闭这段时间。

1. application 作用域

application作用域就是服务器启动到关闭的整段时间,在这个作用域内设置的信息可以被所有应用程序使用。application作用域上的信息传递是通过ServletContext实现的,它提供的主要方法如下所示:

Object getAttribute(String name):从application中获取信息。

void setAttribute(String name, Object value):向application作用域中设置信息。

2. session作用域

session作用域比较容易理解,同一浏览器对服务器进行多次访问,在这多次访问之间传递信息,就是session作用域的体现。session是通过HttpSession接口实现的,它提供的主要方法如下所示。

Object HttpSession.getAttribute(String name):从session中获取信息。

void HttpSession.setAttribute(String name, Object value):向session中保存信息。

HttpSession HttpServletRequest.getSession():获取当前请求所在的session的对象。

session的开始时刻比较容易判断,它从浏览器发出第一个HTTP请求即可认为会话开始。但结束时刻就不好判断了,因为浏览器关闭时并不会通知服务器,所以只能通过如下这种方法判断:如果一定的时间内客户端没有反应,则认为会话结束。Tomcat的默认值为120分钟,但这个值也可以通过HttpSession的setMaxInactiveInterval(int interval)方法来设置,如果想主动让会话结束,例如用户单击"注销"按钮的时候,可以使用 HttpSession 的 invalidate()方法,用于强制结束当前session。

3. request作用域

一个HTTP请求的处理可能需要多个Servlet合作,而这几个Servlet之间可以通过某种方式传递信息,但这个信息在请求结束后就无效了。

Servlet之间的信息共享是通过HttpServletRequest接口的两个方法来实现的。

void setAttribute(String name, Object value):将对象value以name为名称保存到request作用域中。

Object getAttribute(String name):从request作用域中取得指定名字的信息。

JSP中的doGet()、doPost()方法的第一个参数就是HttpServletRequest对象,使用这个对象的 setAttribute()方法即可传递信息。

那么在设置好信息之后,要通过何种方式将信息传给其他的Servlet呢?这就要用到RequestDispatcher接口的forward()方法,通过它将请求转发给其他Servlet。

RequestDispatcher ServletContext.getRequestDispatcher(String path):取得Dispatcher以便转发。path为转发的目的Servlet。

void RequestDispatcher.forward(ServletRequest request, ServletResponse response):将request和response转发。

因此,只需要在当前Servlet中先通过setAttribute()方法设置相应的属性,然后使用forward()方法进行跳转,最后在跳转到的Servlet中通过使用getAttribute()方法即可实现信息传递。

PHP的程序员可能不太好理解这一段,因为PHP中没有转发的概念,一个请求只能由一个PHP文件来处理,所以PHP中根本没有request作用域的概念。而Servlet则不同,请求可以在应用程序中任意转发,所以用request作用域在不同Servlet之间传递信息。

注意两点:

转发不是重定向,转发是在Web应用内部进行的。PHP支持重定向但没有转发。

转发对浏览器是透明的,也就是说,无论在服务器上如何转发,浏览器地址栏中显示的仍然是最初那个Servlet的地址。重定向的浏览器地址是变化的。

4. page作用域

page对象的作用范围仅限于用户请求的当前页面,对于page对象的引用将在响应返回给客户端之后被释放,或者在请求被转发到其他地方后被释放。对page对象的引用通常存储在pageContext对象中。

以上介绍的作用范围越来越小,request和page的生命周期都是短暂的,它们之间的区别:一个request可以包含多个page页(include,forward及filter)。

热心网友 时间:2022-04-20 09:33

jsp九个内置对象及4个作用域
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
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 本科论文答辩ppt一般多少页? JSP中四种对象作用域有哪些区别? 华为荣耀play3开启了支付宝定位服务为什么还是显示没有开启? 华为荣耀4a手机支付宝定位设置被禁止打开 动物尾巴的特点是什么? jsp四大作用域及区别 金士顿的U盘格式化了以后原来的资料还想要应该怎么办才好呢? 我金士顿U盘被我格式化了,请问如何恢复U盘 金士顿U盘格式化怎么恢复? 金士顿u盘不小心格式化了怎么恢复 我经常发烧是什么原因 东风本田life和飞度区别是什么?, 飞度和北京现代悦动两款车型各有什么优缺点? 我的华为手机为什么出现内部存储空间不足,用手机管家清理了还不行,怎么才能才能内部存储空间充足? 怎么追回一个把你当普通朋友的男生? 如何挽回一个已经坚决离开的男生?可以详细说说吗? 联想一键恢复怎么删除以前的备份文件 联想s6000平板电脑怎么删除备份数据 联想家悦电脑初始备份能删除吗?初始备份又存放在硬盘位置哪个区? 我在联想电脑里做了一个备份文件如何删除 用醋泡洗不锈钢几个小时后清洗,不锈钢还能用吗? 关于不锈钢的问题已经纠结好久了,到底可不可以用醋泡洗一下啊,会不会释放重金属啊? 新买的不锈钢上面有黑色物质很难清洗,可以用醋泡洗吗?用白醋洗的干净吗? 新买的不锈钢用品可以用白醋泡几个小时再清洗吗? jsp的9个内置对象和4个作用域都有哪些 呼和浩特天赋盛宴天使之翼厅可以坐多少人 临河天赋盛宴酒店投资了几千万 安康有天赋盛宴酒店吗? lol盛宴天赋.讲道理,adc点出lol里的盛宴天赋(击杀单位回复30生命值)有什么用处? LOL天赋盛宴18级时回复多少 天赋里的“盛宴”杀小兵回血,群攻技能清兵也回吗 莫甘娜天赋上的"盛宴"要不要点上呢?(楼主感觉对缺蓝的情况能得到些许弥补)但是点了又感觉多浪费一个 法师天赋怎么加 小法常用天赋加点图 风暴英雄霜之哀伤盛宴天赋实用吗 亚索S6赛季天赋点双刃剑好还是盛宴好一些很纠结 LOL金属大师的W可以对小兵触发守护者天赋吗 lol中哪个天赋是击杀敌方英雄能立即回复一定血量 魔兽世界高爆发力盗贼天赋 求WLK现版本盗贼最快练级天赋加点流程!!! QQ农场和牧场最快升级方法是?