JSP的内置对象有9个,他们分别为request、response、application、session、out、pageContext、config、page、exception对象。
request对象封装了由客户端产生的HTTP请求的所有细节,主要包括HTTP头信息、系统信息、请求方式和请求参数等。通过request对象提供的相应方法可以处理客户端浏览器提交的HTTP请求中的各项参数。在进行请求转发时,需要把一些数据传递到转发后的页面进行处理。这是就需要使用request对象的setAttribute()方法将数据保存到request范围内的变量中,setAttribute(String key,String value)方法是以键值对的形式进行存储的,也可以通过getAttribute(String name)获取由java程序获取jsp中的name属性值,获取由前台输入框的值或者通过选择框的值的获取。获取cookie的时候,需要通过getCookie()的方法即可获取到所有cookie对象的集合,通过cookie对象中的getName()方法获取到指定名称的cookie,通过cookie对象中的getValue()方法即可获取到cookie对象的值。
response对象用于响应客户请求,向客户端输出信息。他封装了jsp产生的响应,并发送到客户端以响应客户端的请求。请求的数据可以是各种数据类型,甚至是文件。该对象仅在jsp页面内有效。当使用该对象提供setRedirect()方法可以将网页重定向到另一个页面,支持将地址重定向到不同的主机上,这一点与转发不同。在客户端浏览器上将会得到跳转的地址,并重新发送请求链接,重定向之后,之前的request对象失效,开始新的request对象,具体用法setRedirect(String path)。通过该对象可以设置HTTP响应报头,其中,最常用的是禁用缓存、设置页面自动刷新和定时跳转网页。当该对象设置输出缓冲时,需要注意的是,当出现三种情况之一,就会把缓冲区写进客户端:1.页面的输出信息已经全部写入到了缓存区。2。缓存区已满。3.在JSP页面中,调用了该对象的flushBuffere()方法或out对象的flush()。
session被称为会话。由于HTTP协议是一种无状态协议,也就是当客户端向服务器发送请求,服务器接收器请求之后,并返回响应,该连接就结束了,而服务器并不保存相关信息。为了弥补这一缺点,HTTP中提供了session。通过session可以在应用程序的Web页面间进行跳转时,保存用户的状态,使整个用户会话一直存在下去,直到关闭浏览器。但是,如果在一个会话中,客户端长时间不向服务端发送请求,那么该对象就会消失,这个时间取决于服务器。
通过该对象可以存储或者读取客户端相关的信息,可以通过该对象的setAttribute()和getAttribute()实现。setAttribute()用于将信息保存到session中,getAttribute()用于获取保存session范围内的信息。移除session对象,可以使用该对象的removeAttribute()。可以通过invalidate()销毁session,如果使用了该方法,在调用的时候,就会报出Session already invalidated异常。session是较常用的内置对象之一,与request对象相比其作用范围更大。