为了简化JSP表达式和scriptlets中的代码,提供了8种自动定义的变量,有时称做implicit objects(固有对象)。它们是:request,response,out,session,application,config,pageContext,和 page。下面我们来详细的了解它们。 request 与request相联系的是HttpServletRequest类,使您可以得到request的参数(通过getParameter方法),request 的类型(GET,POST,HEAD,等等),和引入的HTTP头(cookies,Referer,等等)。严格来说,request是类ServletRequest的一个子类而不是HttpServletRequest类的,事实上,如果request的协议不是HTTP,那麽它几乎不会工作。 response 对客户端的response与HttpServletResponse 相连。请注意,因为输出流是放入缓冲的,所以可以设置HTTP状态码和response头,尽管在标准的servlets中不允许将之发送到客户端。 out 这里使用PrintWriter类来发送输出到客户端。然而,为了使response对象有效,可使用一个PrintWrite类的使用缓冲的版本JspWriter。使用session的属性page directive,您可以自己定义缓冲的大小,甚至可以在使用了buffer属性后关闭缓冲。也请注意,out仅用于scriptlets之中,因为JSP表达式自动的放入输出流,所以极少需要明确的声明out。 session 应用与request相联系的HttpSession类。因为session是自动创建的,即使没有一个引入的session,这种变量仍可绑定。有一个例外是,如果您用page directive关闭session,再试图使用session时将导致错误(在JSP页面向servlet转换时)。 application 使用ServeletContext类,通过使用getServletConfig().getContext()得到。 config 是一个ServletConfig类的对象。 pageContext 这是JSP中的一个新的类PageContext,用于精练特定服务器的特点时使用,如提高JspWriters的执行效率。如果您通过这个类访问而不是直接的,您的代码将仍然运行在“规则”的JSP /servlet引擎。 page 在JAVA中不是很有用,它仅仅是用来保存在脚本的语言不是JAVA时的时间。