?JSP预定义变量?
为了简化JSP表达式和Scriptlet的代码,JSP提供了8个预先定义的变量(或称为隐含对象)。这些变量是request、response、out、session、application、config、pageContext和page。?
12.4.1 request?
这是和请求关联的HttpServletRequest,通过它可以查看请求参数(调用getParameter),请求类型(GET,POST,HEAD,等),以及请求的HTTP头(Cookie,Referer,等)。严格说来,如果请求所用的是HTTP之外的其他协议,request可以是ServletRequest的子类(而不是HttpServletRequest),但在实践中几乎不会用到。?
12.4.2 response?
这是和应答关联的HttpServletResponse。注意,由于输出流(参见下面的out)是带缓冲的,因此,如果已经向客户端发送了输出内容,普通Servlet不允许再设置HTTP状态代码,但在JSP中却是合法的。?
12.4.3 out?
这是用来向客户端发送内容的PrintWriter。然而,为了让response对象更为实用,out是带缓存功能的PrintWriter,即JspWriter。JSP允许通过page指令的buffer属性调整缓存的大小,甚至允许关闭缓存。
out一般只在Scriptlet内使用,这是因为JSP表达式是自动发送到输出流的,很少需要显式地引用out。?
12.4.4 session?
这是和请求关联的HttpSession对象。前面我们已经介绍过会话的自动创建,我们知道,即使不存在session引用,这个对象也是自动绑定的。但有一个例外,这就是如果你用page指令的session属性关闭了会话,此时对session变量的引用将导致JSP页面转换成Servlet时出错。?
12.4.5 application?
这是一个ServletContext,也可以通过getServletConfig().getContext()获得。?
12.4.6 config?
这是当前页面的ServletConfig对象。?
12.4.7 pageContext?
主要用来管理页面的属性。?
12.4.8 page?
它是this的同义词,当前用处不大。它是为了Java不再是唯一的JSP编程语言而准备的占位符。