日期:2014-05-16  浏览次数:20429 次

Jsp 的 8 预先定义的变量(内置对象)

?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编程语言而准备的占位符。