JSP中的九大内置对象(基本概括和内置对象之间的传值)

先简单概括一下九大内置对象的一些定义

定义:为了接收和处理用户的请求,由服务器(tomcat)自动创建的,用于和用户进行数据的交互和传递,和服务器组件的传递;

Request

生存周期:

请求交给服务器就创建,请求结束时销毁(请求范围)由后台决定

作用:

1、接收和传递用户的请求数据(参数)

2、接收和传递服务器组件设置的数据信息(属性)

Response

生存周期:

请求交给服务器就创建,请求结束时销毁(请求范围)

作用:

把结果信息放在http协议中,回传给浏览器显示

Session

生存周期:

用户第一次发请求访问服务器动态组件时创建,用户下线时销毁(关闭浏览器后15分钟)(用户范围)(生存时间远大于request)用户决定

作用:

传递验证信息

Application

生存周期:

服务器开启到服务器关闭(服务范围)

作用:存放公共信息(存放三个框架的继承信息)

Config

生存周期:

服务器开启到服务器关闭(服务范围)

作用:传递配置信息(web.xml中组件的配置信息的初始化参数)

page和pageContext

生存周期:

访问页面到离开页面

作用:存放临时信息

out和response类似

为什么不用:

1不符合mvc设计模式

2不安全

Exception(服务范围)

作用:处理异常信息

 

1.request的类型为:HttpServletRequestWrapper,这个类实现了HttpServletRequest接口(支持了http
协议),而这个接口继承了ServletRequest(不支持http协议)接口(接口可以多继承)
2.接收request使用httpservletrequest接口类型来作为形参,降低耦合性

1.response的类型为:类似于request,HttpServletResponseWrapper,这个类实现了
HttpServletResponse接口(支持了http协议),而这个接口继承了ServletResponse(不支持http协
议)接口(接口可以多继承)
2.以HttpServletResponse类型的接口为形参

 

设置和获取属性

Public abstract  void setAttribute(String name,Object value)

  属性名称为字符串

  属性值可以为任意对象  

public abstract Object getAttribute(String name)

 拿到属性值是object类型,需要造型

 两个方法的,参数及属性的类型必须记住

 

先来重点讲一下内置对象之间的传值:

request传值

用户只发一次请求,tomca创建request对象, 后台组件往request对象中设定属性。 服务端发生跳转的时候,用户不知道后台跳

转了哪些组件,不用重新发清求,请求没有结束,request仍存在。 以该用户请求对应的request拿属性与参数,若还存在服务端

跳转则继续跳转,若没有服务端跳转,请求结束,response就将结果信息(属性与参数)回传给浏览器。

●服务端跳转,request对象中的数据可以进行共享传递

●如果是客户端跳转,跳转到新页面后是一 个新的请求,会重新创建一 个空的request对象,没有属性和参数,无法传递数据

优点:生存周期短,对内存没有太大影响;服务端跳转,安全;

用户请求参数只在request里放,其他内是对象拿不到请求参数

 

Session传值

只要设置上去,则不管是什么跳转,都可以取得属性

EMAIL  用户需要先进行登陆,登陆成功之后,再编辑邮件

与session有关的任何打开的页面都可以取得session

session的主要功能:用于验证用户是否登陆

一个应用——传递验证信息:
有一个login.jsp,用户输入用户名密码后,此页面将请求参数传递到了loginservlet,然后在这个页面对
用户名密码通过request进行验证,
若验证通过,设置session属性的falg,其值为true,然后通过请求重定向进行客户端跳转,进入存取款界
面bank.jsp,
这时上一次请求已经结束,在此页面中从session中getAttribute拿到flag属性值,判断是否为true,若
是,则验证是同一个用户,才可以进行存取
每一次存取都是不同的请求,若下一次进行存取,仍然依此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存数据不安全,谁都可以访问。而且他一直存在耗空间大
Page只能在本页面才有效,由于生命周期太短,所以一般不用他存数据
Session,生命周期是一个会话,时间由客户端说的算,所以时间可能长而且效率低,所以session一般存客户的信息如登陆的密码等,而这些信息字节大小一般比较小,所以session用于存储客户信息。

Request,生命周期在一个请求中,请求结束就销毁。所以request存数据安全,只有本request周期才能访问,由于生命周期不是很长所以耗内存小。

综上:request是存储数据和传递数据的最好对象。Request用在服务端跳转才能最好的利用他。

 

下一篇讲九大内置对象各自的应用场景

 

 

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