一、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四个作用域中

  1. 如果把变量放到pageContext里,就说明它的作用域是page,它的有效范围只在当前jsp页面里。 从把变量放到pageContext开始,到jsp页面结束,你都可以使用这个变量。

  2. 如果把变量放到request里,就说明它的作用域是request,它的有效范围是当前请求周期。所谓请求周期,就是指从http请求发起,到服务器处理结束,返回响应的整个过程。在这个过程中可能使用forward的方式跳转了多个jsp页面,在这些页面里你都可以使用这个变量。

  3. 如果把变量放到session里,就说明它的作用域是session,它的有效范围是当前会话。所谓当前会话,就是指从用户打开浏览器开始,到用户关闭浏览器这中间的过程。这个过程可能包含多个请求响应。也就是说,只要用户不关浏览器,服务器就有办法知道这些请求是一个人发起的,整个过程被称为一个会话(session),而放到会话中的变量。

  4. 如果把变量放到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的三大作用域对象相关推荐

  1. 面试之JSP九大内置对象和JSP四大作用域

    jsp 九大内置对象和其作用详解 JSP中一共预先定义了9个这样的对象,分别为:request.response.session.application.out.pagecontext.config. ...

  2. 小汤学编程之JavaEE学习day03——JSP组成结构、JSP原理、JSP生命周期、JSP九大内置对象、四大作用域、JSP的MVC模式

    一.JSP组成结构 二.JSP的原理 1.JSP的运行原理     2.分析JSP所生成的Servlet代码     3.JSP的执行过程 三.JSP生命周期 四.JSP九大内置对象 五.JSP四大作 ...

  3. JSP九大内置对象四大作用域

    JSP简介 JSP(Java Service Page 即java服务器页面)也就是对Servlet的一种封装,每次都是先转译成Servlet才能执行,因为Servlet写HTML时每一句都要用res ...

  4. JSP九大内置对象,四大作用域

    JSP九大内置对象 内置对象是在java脚本不需要创建,就可以直接使用的对象. ①request:代表请求 (用得多) HttpServletRequest对象.就是servlet里面的request ...

  5. 【Spring】JSP 九大内置对象、作用域复习

    博客: 总结 JSP的四大域对象.Servlet的四个作用域: pageContext.request.session.application JSP 九大内置对象和四大作用域复习 名称 类型 含义 ...

  6. JSP——九大内置对象和其四大作用域

    一.JSP九大内置对象: JSP根据Servlet API 规范提供了某些内置对象,开发者不用事先声明就可以使用标准的变量来访问这些对象. Request:代表的是来自客户端的请求,例如我们在FORM ...

  7. JSP九大内置对象及其作用+四大域对象

    JSP九大内置对象及其作用+四大域对象 一,什么是内置对象? 在jsp开发中会频繁使用到一些对象,如ServletContext HttpSession PageContext等.如果每次我们在jsp ...

  8. JavaWeb——JSP九大内置对象及作用域详解

    文章目录 JavaWeb--JSP九大内置对象及作用域 1. 九大内置对象 1.1 request对象 1.2 response对象 1.3 out对象 1.4 session对象 1.5 appli ...

  9. JSP九大内置对象(转载)

    JSP中一共预先定义了9个这样的对象,分别为:request.response.session.application.out.pagecontext.config.page.exception 1. ...

最新文章

  1. .net连接mysql数据_.net连接MYSQL数据库的方法及示例!
  2. python 多条件 选择 算法_Python 子集的算法优化; 找寻一个list的所有满足特定条件的子集...
  3. Generator + Promises, the best of all worlds in ES6
  4. IOS自动化打包介绍
  5. Javascript 补位运算符
  6. 龙族幻想服务器维护中怎么办,龙族幻想遇到无法连接服务器?两招教你轻松解决...
  7. Android线程创建aop,【android安卓】一个注解搞定线程切换,基于AOP的线程转换框架...
  8. (面试题)html中创建模态窗口的方法有哪些?
  9. hdu--2660--二维费用背包
  10. python 什么是鸭子类型
  11. 微软出了一个Python小白神器!
  12. mysqld: [ERROR] Found option without preceding group in config file my.ini at line 1
  13. 将基站搬到天上,物联网迎来一场“升维”竞争
  14. 【唐诗学习】六、诗仙李白
  15. MATLAB与FPGA数字信号处理(数字滤波器设计)、数字IC、无线通信、图像处理、信道编码系列
  16. 中北大学朔州校区计算机科学与技术分数线,2020山西中北大学朔州校区研究生推免名额分配公示...
  17. 惠普软件技术总监赵大平:IT与业务的结合
  18. 用友:携手华为,共建“鲲鹏”新生态
  19. Netty 是什么?
  20. 关于maxlength的使用

热门文章

  1. 玩ts要注意什么_幼儿园装修要注意什么
  2. xlswriter-用于Excel 2007+XLSX文件中读取数据
  3. 简单公司主页HTML5模板
  4. emlog独立会员中心模板源码 UserEmlog Ver:1.0
  5. 苹果CMS v10模板最近很火的电影先生v1.0.2修复版
  6. js底部广告飘窗代码
  7. SQL知识你了解多少?
  8. 用 WebClient.UploadData 方法 上载文件数据
  9. SVG 入门教程系列列表
  10. HTML5: 全局属性