九大内置对象+四大范围对象传值

**

九大内置对象

**
定义: 为了接受和处理用户的请求,由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”," zte’ )
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埋放,其他内置对象拿不到请求参数

-------------------------------------re加粗样式sponse传值---------------------------------------------
同上

-------------------------------------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传数据

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章