JSP九大内置对象和四大作用域和Servlet的三大作用域对象
一、JSP九大内置对象:内置对象(又叫隐含对象,有9个内置对象):不需要预先声明就可以在脚本代码和表达式中随意使用
内置对象特点:
由JSP规范提供,不用编写者实例化。
通过Web容器实现和管理
所有JSP页面均可使用
只有在脚本元素的表达式或代码段中才可使用(<%=使用内置对象%>或<%使用内置对象%>)
常用内置对象:
** 输出输入对象:**request对象、response对象、out对象
** 通信控制对象:**pageContext对象、session对象、application对象
Servlet对象:page对象、config对象
错误处理对象:exception对象
括号内为其对应的类
Request(ServletRequest):它包含了有关浏览器请求的信息.通过该对象可以获得请求中的头信息、Cookie和请求参数。
Response(ServletResponse):作为JSP页面处理结果返回给用户的响应存储在该对象中。并提供了设置响应内容、响应头以及重定向的方法(如cookies,头信息等)
Out(JspWriter):用于将内容写入JSP页面实例的输出流中,提供了几个方法使你能用于向浏览器回送输出结果。
pageContext(PageContext):描述了当前JSP页面的运行环境。可以返回JSP页面的其他隐式对象及其属性的访问,另外,它还实现将控制权从当前页面传输至其他页面的方法。
Session(HttpSession):会话对象存储有关此会话的信息,也可以将属性赋给一个会话,每个属性都有名称和值。会话对象主要用于存储和检索属性值。
Application(ServletContext):存储了运行JSP页面的servlet以及在同一应用程序中的任何Web组件的上下文信息。
Page(Object):表示当前JSP页面的servlet实例
Config(ServletConfig):该对象用于存取servlet实例的初始化参数。
Exception(Throwable):在某个页面抛出异常时,将转发至JSP错误页面,提供此对象是为了在JSP中处理错误。只有在错误页面中才可使用<%@page isErrorPage=“true”%>
Jsp内置对象 | 功能 | 主要方法 |
---|---|---|
out | 向客户端输出数据 | print() println() flush() clear() isAutoFlush() getBufferSize() close() ………… |
request | 向客户端请求数据 | getAttributeNames() getCookies() getParameter() getParameterValues() setAttribute() getServletPath() ………… |
response | 封装了jsp产生的响应,然后被发送到客户端以响应客户的请求 | addCookie() sendRedirect() setContentType() flushBuffer() getBufferSize() getOutputStream() sendError() containsHeader()…………… |
application | Gryffindor | 90 |
config | 表示Servlet的配置,当一个Servlet初始化时,容器把某些信息通过此对象传递给这个Servlet | getServletContext() getServletName() getInitParameter() getInitParameterNames()…………… |
page | Jsp实现类的实例,它是jsp本身,通过这个可以对它进行访问 | flush()……… |
pagecontext | 为JSP页面包装页面的上下文。管理对属于JSP中特殊可见部分中己经命名对象的该问 | forward() getAttribute() getException() getRequest() getResponse() getServletConfig() getSession() getServletContext() setAttribute() removeAttribute() findAttribute() …………… |
session | 用来保存每个用户的信息,以便跟踪每个用户的操作状态 | getAttribute() getId() getAttributeNames() getCreateTime() getMaxInactiveInterval() invalidate() isNew() |
exception | 反映运行的异常 | getMessage()………… |
二、JSP四大作用域
jsp的四大作用域为:PageContext,ServletRequest,HttpSession,ServletContext;
ServletRequest域:作用范围是整个请求链(请求转发也存在);生命周期是在service方法调用前由服务器创建,传入service方法。整个请求结束,request生命结束。
HttpSession域:作用范围是一次会话。生命周期是在第一次调用request.getSession()方法时,服务器会检查是否已经有对应的session,如果没有就在内存中创建一个session并返回。当一段时间内session没有被使用(默认为30分钟),则服务器会销毁该session。如果服务器非正常关闭(强行关闭),没有到期的session也会跟着销毁。如果调用session提供的invalidate() ,可以立即销毁session。
ServletContext域:作用范围是整个Web应用。生命周期是当Web应用被加载进容器时创建代表整个web应用的ServletContext对象,当服务器关闭或Web应用被移除时,ServletContext对象跟着销毁。
作用域从小到大为:PageContext(jsp页面)< ServletRequest(一次请求)< HttpSession(一次会话)< ServletContext(整个web应用)。
pageContext, request, session、application四个作用域中
如果把变量放到pageContext里,就说明它的作用域是page,它的有效范围只在当前jsp页面里。 从把变量放到pageContext开始,到jsp页面结束,你都可以使用这个变量。
如果把变量放到request里,就说明它的作用域是request,它的有效范围是当前请求周期。所谓请求周期,就是指从http请求发起,到服务器处理结束,返回响应的整个过程。在这个过程中可能使用forward的方式跳转了多个jsp页面,在这些页面里你都可以使用这个变量。
如果把变量放到session里,就说明它的作用域是session,它的有效范围是当前会话。所谓当前会话,就是指从用户打开浏览器开始,到用户关闭浏览器这中间的过程。这个过程可能包含多个请求响应。也就是说,只要用户不关浏览器,服务器就有办法知道这些请求是一个人发起的,整个过程被称为一个会话(session),而放到会话中的变量。
如果把变量放到application里,就说明它的作用域是application,它的有效范围是整个应用。整个应用是指从应用启动,到应用结束。我们没有说“从服务器启动,到服务器关闭”是因为一个服务器可能部署多个应用,当然你关闭了服务器,就会把上面所有的应用都关闭了。application作用域里的变量,它们的存活时间是最长的,如果不进行手工删除,它们就一直可以使用。与上述三个不同的是,application里的变量可以被所有用户共用。如果用户甲的操作修改了application中的变量,用户乙访问时得到的是修改后的值。这在其他scope中都是不会发生的,page, request, session都是完全隔离的,无论如何修改都不会影响其他
** 三、servlet的三大作用域对象:**
1.request(HttpServletRequest)
request是表示一个请求,只要发出一个请求就会创建一个request,它的作用域:仅在当前请求中有效。
用处:常用于服务器间同一请求不同页面之间的参数传递,常应用于表单的控件值传递。
方法:request.setAttribute(); request.getAttribute(); request.removeAttribute(); request.getParameter().
2.session(HttpSession):
服务器会为每个会话创建一个session对象,所以session中的数据可供当前会话中所有servlet共享。
会话:用户打开浏览器会话开始,直到关闭浏览器会话才会结束。一次会话期间只会创建一个session对象。
用处:常用于web开发中的登陆验证界面(当用户登录成功后浏览器分配其一个session键值对)。
方法:session.setAttribute(); session.getAttribute(); session.removeAttribute();
获得session对象方法:
在Servlet中:HttpSession session = request.getSession();
由于session属于jsp九大内置对象之一,当然可以直接使用。例如:<%session.serAttribute("name","admin")%>。session被销毁
1.session超时;
2.客户端关闭后,再也访问不到和该客户端对应的session了,它会在超时之后被销毁;
3.调用session. invalidate();
备注: session是服务器端对象,保存在服务器端。并且服务器可以将创建session后产生的sessionid通过一个cookie返回给客户端,以便下次验证。(session底层依赖于cookie)
3.application(ServletContext):
tomcat启动时创建,tomcat关闭时销毁,整个web的生命周期只有一个
作用范围:所有的用户都可以取得此信息,此信息在整个服务器上被保留。Application属性范围值,只要设置一次,则所有的网页窗口都可以取得数据。ServletContext在服务器启动时创建,在服务器关闭时销毁,一个JavaWeb应用只创建一个ServletContext对象,所有的客户端在访问服务器时都共享同一个ServletContext对象;ServletContext对象一般用于在多个客户端间共享数据时使用;
- 获取application对象方法(Servlet中):
ServletContext app01 = this.getServletContext();
app01.setAttribute("name", "kaixuan"); //设置一个值进去
ServletContext app02 = this.getServletContext();
app02.getAttribute("name"); //获取键值对
ServletContext同属于JSP九大内置对象之一,故可以直接使用
备注:服务器只会创建一个ServletContext 对象,所以app01就是app02,通过app01设置的值当然可以通过app02获取。
Servlet三大作用域总结:
作用域: (1)request,(2)session,(3)application
(1)使用作用域传递数据和存储数据
(2)使用作用域传递数据时,必须掌握作用域对应的生命周期和作用范围
生命周期
(1) request:只限于一次请求
(2) session:一次会话(多次请求)
开始
用户向服务器发送请求的时候 结束客户端丢失JsessionId值的时候(关闭浏览器)服务器端 关闭服务器 超过会话的不活动周期时间
(3) application:项目的加载到卸载
作用范围
(1) requset:所有被请求转发的Servlet
(2) session:所有的Servlet
(3)application:所有的Servlet(换一个浏览器演示,跟session作用域区分)
如何正确的选择作用域
(1) request:跟当前操作功能相关
(2) session: 跟用户信息相关
(3) application:跟项目全局信息相关
如何正确的选择作用域不正确,会出现什么情况:
内存浪费
转载于:https://www.cnblogs.com/xianyao/p/10793478.html
JSP九大内置对象和四大作用域和Servlet的三大作用域对象相关推荐
- 面试之JSP九大内置对象和JSP四大作用域
jsp 九大内置对象和其作用详解 JSP中一共预先定义了9个这样的对象,分别为:request.response.session.application.out.pagecontext.config. ...
- 小汤学编程之JavaEE学习day03——JSP组成结构、JSP原理、JSP生命周期、JSP九大内置对象、四大作用域、JSP的MVC模式
一.JSP组成结构 二.JSP的原理 1.JSP的运行原理 2.分析JSP所生成的Servlet代码 3.JSP的执行过程 三.JSP生命周期 四.JSP九大内置对象 五.JSP四大作 ...
- JSP九大内置对象四大作用域
JSP简介 JSP(Java Service Page 即java服务器页面)也就是对Servlet的一种封装,每次都是先转译成Servlet才能执行,因为Servlet写HTML时每一句都要用res ...
- JSP九大内置对象,四大作用域
JSP九大内置对象 内置对象是在java脚本不需要创建,就可以直接使用的对象. ①request:代表请求 (用得多) HttpServletRequest对象.就是servlet里面的request ...
- 【Spring】JSP 九大内置对象、作用域复习
博客: 总结 JSP的四大域对象.Servlet的四个作用域: pageContext.request.session.application JSP 九大内置对象和四大作用域复习 名称 类型 含义 ...
- JSP——九大内置对象和其四大作用域
一.JSP九大内置对象: JSP根据Servlet API 规范提供了某些内置对象,开发者不用事先声明就可以使用标准的变量来访问这些对象. Request:代表的是来自客户端的请求,例如我们在FORM ...
- JSP九大内置对象及其作用+四大域对象
JSP九大内置对象及其作用+四大域对象 一,什么是内置对象? 在jsp开发中会频繁使用到一些对象,如ServletContext HttpSession PageContext等.如果每次我们在jsp ...
- JavaWeb——JSP九大内置对象及作用域详解
文章目录 JavaWeb--JSP九大内置对象及作用域 1. 九大内置对象 1.1 request对象 1.2 response对象 1.3 out对象 1.4 session对象 1.5 appli ...
- JSP九大内置对象(转载)
JSP中一共预先定义了9个这样的对象,分别为:request.response.session.application.out.pagecontext.config.page.exception 1. ...
最新文章
- .net连接mysql数据_.net连接MYSQL数据库的方法及示例!
- python 多条件 选择 算法_Python 子集的算法优化; 找寻一个list的所有满足特定条件的子集...
- Generator + Promises, the best of all worlds in ES6
- IOS自动化打包介绍
- Javascript 补位运算符
- 龙族幻想服务器维护中怎么办,龙族幻想遇到无法连接服务器?两招教你轻松解决...
- Android线程创建aop,【android安卓】一个注解搞定线程切换,基于AOP的线程转换框架...
- (面试题)html中创建模态窗口的方法有哪些?
- hdu--2660--二维费用背包
- python 什么是鸭子类型
- 微软出了一个Python小白神器!
- mysqld: [ERROR] Found option without preceding group in config file my.ini at line 1
- 将基站搬到天上,物联网迎来一场“升维”竞争
- 【唐诗学习】六、诗仙李白
- MATLAB与FPGA数字信号处理(数字滤波器设计)、数字IC、无线通信、图像处理、信道编码系列
- 中北大学朔州校区计算机科学与技术分数线,2020山西中北大学朔州校区研究生推免名额分配公示...
- 惠普软件技术总监赵大平:IT与业务的结合
- 用友:携手华为,共建“鲲鹏”新生态
- Netty 是什么?
- 关于maxlength的使用