一、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:跟项目全局信息相关
如何正确的选择作用域不正确,会出现什么情况:
内存浪费
JSP九大内置对象和四大作用域和Servlet的三大作用域对象的更多相关文章
-
JSP——九大内置对象和其四大作用域
一.JSP九大内置对象: JSP根据Servlet API 规范提供了某些内置对象,开发者不用事先声明就可以使用标准的变量来访问这些对象. Request:代表的是来自客户端的请求,例如我们在FORM ...
-
jsp 九大内置对象和其作用以及四大域对象
感谢作者:Fangcf. 链接:https://blog.csdn.net/qq_39320833/article/details/80818442 一.jsp 九大内置对象 方法简单介绍:https ...
-
Jsp九大内置对象及其作用域
本文主要介绍Jsp九大内置对象及其作用域,着重介绍几个常用的,希望对初学者有所帮助. 1 Jsp九大内置对象 2 详细介绍 2.1 request javax.servlet.http.HttpSer ...
-
JSP九大内置对象和四个作用域
JSP九大内置对象和四个作用域 在学习JSP的时候,首先就要先了解JSP的内置对象,什么是内置对象呢?内置对象也叫隐含对象,就是不需要预先声明就可以在脚本代码和表达式中随意使用.而这样的内置对象在JS ...
-
黑马程序员【JSP九大内置对象和四个作用域】转载
http://www.cnblogs.com/fanfu1/p/4530980.html JSP九大内置对象和四个作用域 ------- android培训.java培训.期待与您交流! ------ ...
-
JSP九大内置对象的作用和用法总结?
JSP九大内置对象的作用和用法总结? 1.request对象javax.servlet.http.HttpServletRequest request对象代表了客户端的请求信息,主要用于接受通过HTT ...
-
JSP九大内置对象(转载)
JSP中一共预先定义了9个这样的对象,分别为:request.response.session.application.out.pagecontext.config.page.exception 1. ...
-
JSP九大内置对象和四种属性范围解读
林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文首先主要解说了JSP中四种属性范围的概念.用法与实例. 然后在这个基础之上又引入了九 ...
-
一、JSP九大内置对象 	二、JAVAEE三层架构和MVC设计模式 	三、Ajax
一.JSP九大内置对象###<1>概念 不需要预先申明和定义,可以直接在jsp代码中直接使用 在JSP转换成Servlet之后,九大对象在Servlet中的service方法中对其进行定义 ...
随机推荐
-
listview+seekbar问题的解决
最近做了个项目,其中有录音播放功能.每次录音结束都会在listView中显示,在listView中能播放每次的录音,也可以每条录音之间的切换播放.随之就引发了许多的问题,比如当我播放第一条录音的时所有 ...
-
在包a中编写一个类Father,具有属性:年龄(私有)、姓名(公有); 具有功能:工作(公有)、开车(公有)。 在包a中编写一个子类Son,具有属性:年龄(受保护的)、姓名; 具有功能:玩(私有)、学习(公有)。 最后在包b中编写主类Test,在主类的main方法中测试类Father与类Son。
package a; public class Father { public String name; private int age; public Father(String name) { t ...
-
java 访问活动目录代码
package demo; import java.util.Hashtable; import javax.naming.Context; import javax.naming.NamingEnu ...
-
前端开发中的一些chrome插件推荐
这篇博客推荐的都是谷歌chrome浏览器插件,理论上,与之相同内核的浏览器都能使用.由于是谷歌插件,所以在天朝的网络,你懂的! 红杏 专为 学者 .程序员.外贸工作者 打造的上网加速器.我们相信,上网 ...
-
Android 4.4 上实现透明导航栏和状态栏 Translucent system bar
Translucent system UI styling To get the most impact out of your content, you can now use new window ...
-
Linux基础命令第一天
一.命令行bash基本操作 1,shell 用户不能直接操作内核,所以用户操作通过shell传递给内核,Linux下叫shell,就相当于Windows下的cmd shell分为两种: GUI:图形界 ...
-
微信小程序上传后发布或者体验版测试无数据解决办法
在做微信小程序开发的过程中,发现小程序在本地调用接口的数据都显示,但是上传之后,发现手机体验没有数据.以下为解决办法: 1.先清除缓存试试. 2.打开微信小程序工具右上角的详情——项目设置,将“不校验 ...
-
sql数据库光标变成黑快怎么回事?
可能是因为你按到了insert键啦,你再按一下insert键应该就可以啦. 光标变成块状说明当前是覆盖模式.光标变成竖条状说明当前是插入模式.
-
黄聪:php精度计算问题
如果用php的+-*/计算浮点数的时候,可能会遇到一些计算结果错误的问题,比如echo intval( 0.58*100 );会打印57,而不是58,这个其实是计算机底层二进制无法精确表示浮点数的一个 ...
-
xadmin系列之单实例模式
先看下单实例的定义 python的模块实现单例模式是python语言特有的,python的模块天然就是单例的,因为python有个pyc文件,导入一次后,第二次导入直接从pyc中取数据了 这里我们主要 ...