**
九大内置对象
**
定义: 为了接受和处理用户的请求,由tomcat自动创建的内置对象,目的是完成用户数据传递和交互。在服务器组件数据的传递。
作用: 传递数据,内置对象相当于人体的血管,数据相当于血液,在各个组件之间传递。
-------------------------------------request---------------------------------------------
主要作用
接受和传递用户的请求信息(包括请求参数,tomcat执行)
设定和传递服务器端组件设定的信息(属性)
生存周期:
请求开始就由tomcat创建 ,请求结束被销毁。
作用范围:
请求范围,由服务器决定
扩展
继承Interface ServletRequest的子接口interface HttpServleRequest
interface HttpServleRequest
在javax.servelet.http包下,
只有一个实现类HttpServletRequestWrapper, 实现了http协议。
父接口为ServletRequest, 父接口不支持Http协议。
Java web只支持http协议
实现interface HttpServleRequest的类class HttpServletRequestWrapper.
创建request对象的方式
第一种,用类。用与request相同类型(class HttpServletRequestWrapper) 的对象接收数据参数,耦合性太强,不建议用
(层与层之间数据传递用接口传递更好)
第二种,用接口。interface HttpServleRequest。
第三种,也可以用父接口接收,这会失去http的特征,必须造型。
-------------------------------------response---------------------------------------------
生存周期:
一接受用户请求的时候tomcat就创建,请求结束就销毁
主要作用:
把结果信息发给浏览器,进行显示
作用范围:
请求范围,由服务器决定
-------------------------------------session---------------------------------------------
主要作用:
传递验证信息
生存周期:
用户第一次发请求访问服务器的动态组件,用户下线销毁。 (下线15分钟后) (生存周期大于request)
作用范围:
用户范围,由用户决定
-------------------------------------application---------------------------------------------
生存周期:
服务器启动创建,服务器关闭销毁,只创建一个。
.注意
设置过多的application保存过多的对象,会导致效率降低,重则导致内存泄漏
作用范围:
服务器范围。
主要作用:
存放公共信息
-------------------------------------config---------------------------------------------
生存周期:
服务器启动创建,服务器关闭销毁,只创建一个。
主要作用:
存放或传递配置信息。Web.xm|组件配置信 息的初始化参数。
作用范围:
服务器范围。
-------------------------------------page---------------------------------------------
生存周期:
JSP页面一被访问就创建,离开页面销毁。
主要作用:
存放临时信息。
作用范围:
页面范围
-------------------------------------out---------------------------------------------
tomcat创建
与response类似,都是把信息传给浏览器显示
不建议用:
不符合mvc设计模式
不安全
-------------------------------------exception---------------------------------------------
主要作用:
传递异常信息
作用范围:
服务器范围
**
内置对象传值
**
这里都用 name= “zs” password=“123” 举例
-------------------------------------request传值--------------------------------------------
request.setAttribute(“name”," zs" )
request.setAttribute(" password",“123”)
设置属性
public sbstract void setAttribute (ava.lang.String name,java.lang.Object attribute)
获取属性
o public sbstract void getAttribute (Object类型,需造型)
用户只发一-次请求, tomca创建request对象,后台组件往request对象中设定属性。
服务端发生跳转的时候,用户不知道后台跳转了哪些组件,不用重新发请求,请求没有结束,request仍存在。
以该用户请求对应的request拿属性与参数,若还存在服务端跳转则继续跳转,若没有服务端跳转,请求结束,response就将结果信息(属性与参数)回传给浏览器。
服务端跳转,request 对象中的数据可以进行共享传递。
如果是客户端跳转,跳转到新页面后是一个新的请求, 会重新创建一个空的 request对象,没有属性和参数,无法传递数据
优点:
生存周期短,对内存没有太大影响
服务端跳转,安全。
用户请求参数只在request埋放,其他内置对象拿不到请求参数
-------------------------------------response传值---------------------------------------------
同上
-------------------------------------session传值---------------------------------------------
用户发请求
获取验证信息
session.setAttribute(“flag”," ok")
验证成功回到浏览器
取款时验证身份
String flag= (String)session.getAttribute(flag);
session的时间销毁,设定多久不操作session就自动销毁
PS:直接进入转账界面转账失败:为新的用户创建新的session
-------------------------------------page传值------------------------------------------------------
不能通过page传值
只能临时存放数据
page内置对象可以往其他内置对象中设置属性:
(不要这么写,看懂即可)
pageContext.setAttribute(" password",“ZS”,PageContext.XXXXXXX) ;
public static final int APPLICATION SCOPE - application对象
public static final int SESSION SCOPE - session对象
public static final int REQUEST SCOPE – request 对象
-------------------------------------application传值---------------------------------------------
application.setAtrribute(name,zs);
application.getAtrribute(name);
缺点:
◆不安全
◆内存负担过重
结论: -般不用pplication传数据