jsp之四大域对象与九大内置对象学习讲解
1、什么是内置对象
在开发中会频繁使用到一些对象,如servletcontext、httpsession、pagecontext等.如果每次我们在jsp页面中需要使用这些对象都要自己亲自动手创建就会特别的繁琐.sun公司因此在设计jsp时,在jsp页面加载完毕之后自动帮开发者创建好了这些对象,开发者只需要使用相应的对象调用相应的方法即可.这些创建好的对象就叫做内置对象.
在servlet程序中,如果开发者希望使用session对象,必须通过request.getsession()来得到session对象;而在jsp程序中,开发中可直接使用session(系统帮我们创建好的session对象的名字就叫session)调用相应的方法即可,如:session.getid().
jsp有九个内置对象(又叫隐含对象),不需要预先声明就可以在脚本代码和表达式中随意使用。
2、九大内置对象?
1)、jsp九大内置对象分为四类:
输入输出对象:out对象、response对象、request对象
通信控制对象:pagecontext对象、session对象、application对象
servlet对象:page对象、config对象
错误处理对象:exception对象
2)、九种对象简介:
out对象:用于向客户端、输出数据。
request对象:封装了来自客户端、浏览器的各种信息。
response对象:封装了服务器的响应信息。
exception对象:封装了jsp程序执行过程中发生的异常和错误信息。
config对象:封装了应用程序的配置信息。
page对象:指向了当前jsp程序本身。
session对象:用来保存会话信息。也就是说,可以实现在同一用户的不同请求之间共享数
application对象:代表了当前应用程序的上下文。可以在不同的用户之间共享信息。
pagecontext对象:提供了对jsp页面所有对象以及命名空间的访问。
3、内置对象解析:
1)、out对象
out对象是一个输出流,用来向浏览器输出信息,除了输出各种信息外还负责对缓冲区进行管理。
out对象方法介绍:
方法名 |
说明 |
print或println |
输出数据 |
newline |
输出换行字符 |
flush |
输出缓冲区数据 |
close |
关闭输出流 |
clear |
清除缓冲区中数据,但不输出到客户端 |
clearbuffer |
清除缓冲区中数据,输出到客户端 |
getbuffersize |
获得缓冲区大小 |
getremaining |
获得缓冲区中没有被占用的空间 |
isautoflush |
是否为自动输出 |
2)request对象
request对象封装了从客户端到服务器发出的请求信息。
request对象方法介绍:
方法名 |
说明 |
isuserinrole |
判断认证后的用户是否属于某一成员组 |
getattribute |
获取指定属性的值,如该属性值不存在返回null |
getattributenames |
获取所有属性名的集合 |
getcookies |
获取所有cookie对象 |
getcharacterencoding |
获取请求的字符编码方式 |
getcontentlength |
返回请求正文的长度,如不确定返回-1 |
getheader |
获取指定名字报头值 |
getheaders |
获取指定名字报头的所有值,一个枚举 |
getheadernames |
获取所有报头的名字,一个枚举 |
getinputstream |
返回请求输入流,获取请求中的数据 |
getmethod |
获取客户端向服务器端传送数据的方法 |
getparameter |
获取指定名字参数值 |
getparameternames |
获取所有参数的名字,一个枚举 |
getparametervalues |
获取指定名字参数的所有值 |
getprotocol |
获取客户端向服务器端传送数据的协议名称 |
getquerystring |
获取以get方法向服务器传送的查询字符串 |
getrequesturi |
获取发出请求字符串的客户端地址 |
getremoteaddr |
获取客户端的ip地址 |
getremotehost |
获取客户端的名字 |
getsession |
获取和请求相关的会话 |
getservername |
获取服务器的名字 |
getserverpath |
获取客户端请求文件的路径 |
getserverport |
获取服务器的端口号 |
removeattribute |
删除请求中的一个属性 |
setattribute |
设置指定名字参数值 |
3)、response对象
response对象主要用于对客户端的请求进行回应。
以及处理http的连接信息,例如设置http文件头,设置cookie对象等。
response对象方法:
方法名 |
说明 |
addcookie |
添加一个cookie对象 |
addheader |
添加http文件指定名字头信息 |
containsheader |
判断指定名字http文件头信息是否存在 |
encodeurl |
使用sessionid封装url |
flushbuffer |
强制把当前缓冲区内容发送到客户端 |
getbuffersize |
返回缓冲区大小 |
getoutputstream |
返回到客户端的输出流对象 |
senderror |
向客户端发送错误信息 |
sendredirect |
把响应发送到另一个位置进行处理 |
setcontenttype |
设置响应的mime类型 |
setheader |
设置指定名字的http文件头信息 |
4)、session对象
session对象:是一个jsp内置对象,它在第一个jsp被装载时自动创建,完成会话期管理。从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束(或者超时),被称为一个会话。当一个客户访问一个服务器时,可能会在这个服务器的几个页面之间切换,服务器应当通过某种办法知道这是一个客户,就需要创建session对象。
http是无状态的连接协议,需要使用session来存放用户每次的登陆信息
session对象方法:
方法名 |
说明 |
getattribute |
获取指定名字的属性 |
getattributenames |
获取session中全部属性名字,一个枚举 |
getcreationtime |
返回session的创建时间 |
getid |
获取会话标识符 |
getlastaccessedtime |
返回最后发送请求的时间 |
getmaxinactiveinterval |
返回session对象的生存时间单位千分之一秒 |
invalidate |
销毁session对象 |
isnew |
每个请求是否会产生新的session对象 |
removeattribute |
删除指定名字的属性 |
setattribute |
设定指定名字的属性值 |
5)、application对象
application对象代表当前的应用程序。存在于服务器的内存空间中。
应用一旦启动便会自动生成一个application对象。如果应用没有被关闭,
此application对象便一直会存在。直到应用被关闭
application的生命周期比session更长。
应用:
为多个用户共享全局信息。比如当前的在线人数等。
application对象方法:
方法名 |
说明 |
getattribute |
获取应用对象中指定名字的属性值 |
getattributenames |
获取应用对象中所有属性的名字,一个枚举 |
getinitparameter |
返回应用对象中指定名字的初始参数值 |
getservletinfo |
返回servlet编译器中当前版本信息 |
setattribute |
设置应用对象中指定名字的属性值 |
6)、config对象
config对象表示当前jsp程序的配置信息
一般项目中,jsp被用作模版技术,也就是位于表示层
而位于表示层的jsp文件一般是不需要配置信息的
所以此对象在jsp程序中其实很少使用
config对象是servletconfig类的一个实例。
config对象方法:
方法名 |
说明 |
getservletcontext |
返回所执行的servlet的环境对象 |
getservletname |
返回所执行的servlet的名字 |
getinitparameter |
返回指定名字的初始参数值 |
getinitparameternames |
返回该jsp中所有的初始参数名,一个枚举 |
7)、page对象
page对象有点类似与java中的this指针,他指向了当前jsp页面本身。
page对象是java.lang.object类的一个实例
page对象的方法:
方法名 |
说明 |
tostring |
将当前项目的信息打印出来 |
getclass |
返回当前的object类 |
hashcode |
返回page对象的hashcode值 |
equals |
用于比较对象是否与当前对象相同 |
8)、exception对象
exception对象表示jsp引擎在执行代码时抛出的异常
如果想要使用exception对象,那么需要配置编译指令的iserrorpage属性为true
即在页面指令中设置:<%@pageiserrorpage=“true”%>
9)、pagecontext对象
pagecontetx对象是jsp页面中所有对象功能的最大集成着。
使用他可以访问所有的jsp内置对象。
pagecontext对象方法:
方法名 |
说明 |
forward |
重定向到另一页面或servlet |
getattribute |
获取某范围中指定名字的属性值 |
findattribute |
按范围搜索指定名字的属性 |
removeattribute |
删除某范围中指定名字的属性 |
setattribute |
设定某范围中指定名字的属性值 |
getexception |
返回当前异常对象 |
getrequest |
返回当前请求对象 |
getresponse |
返回当前响应对象 |
getservletconfig |
返回当前页面的servletconfig对象 |
getservletcontext |
返回所有页面共享的servletcontext对象 |
getsession |
返回当前页面的会话对象 |
4、jsp中四大域对象
1)分类:
servletcontextcontext域
httpservletrequetrequest域
httpsessionsession域--前三种在学习servlet时就能接触到
pagecontextpage域--jsp学习的
域对象的作用:保存数据,获取数据,共享数据.
2)、保存数据:
pagecontext.setattribute("内容");//默认保存到page域
pagecontext.setattribute("内容",域范围常量);//保存到指定域中
四个域常量:
pagecontext.page_scope
pagecontext.request_scope
pagecontext..session_scope
pagecontext.application_scope
3)、获取数据:
pagecontext.getattribute("内容");
pagecontext.getattribute("name",域范围常量);
自动在四个域中搜索数据pagecontext.findattribute("内容");
在四个域中自动搜索数据,顺序:page域->request域->session域->application域(context域)
4)、域作用范围:
page域:只能在当前jsp页面使用(当前页面)
request域:只能在同一个请求中使用(转发)
session域:只能在同一个会话(session对象)中使用(私有的)
context域:只能在同一个web应用中使用(全局的)