JSP脚本中的9个内置对象

  JSP脚本中包含9个内置对象,这9个内置对象都是Servlet API接口的实例,只是JSP规范对它们进行了默认初始化(由JSP页面对应Servlet的_jspService()方法来创建这些实例)。

  •   application:javax.servlet.ServletContext的实例,该实例代表JSP所属的Web应用本身,可用于JSP页面,或者在Servlet之间交换信息,常用的方法有getAttribute(String attName)、setAttribute(String attName, String attValue) 和 getInitParameter(String paramName)等。
  •   config:javax.servlet.ServletConfig的实例,该实例代表该JSP的配置信息。常用的方法有getInitParameter(String paramName)和getInitParameterNames()等方法。事实上,JSP页面通常无须配置,也就不存在配置信息,因此,该对象更多地在Servlet中有效。
  •   exception:java.lang.Throwable的实例,该实例代表其他页面中的异常和错误。只有当页面是错误处理页面时,该对象才可以使用。常用的方法有getMessage()和printStrackTrace()等。
  •   out:javax.servlet.jsp.JspWriter的实例,该实例代表JSP页面的输出流,用于输出内容,形成HTML页面。
  •   page:代表该页面本身,通常没有太大用处,也就是Servlet中的this,其类型就是生成的Servlet类,能用page的地方就能用this。
  •   pageContext:javax.servlet.jsp.PageContext的实例,该对象代表该JSP页面上下文,使用该对象可以访问页面中的共享数据。常用的方法有getServletContext()和getServletConfig()等。
  •   request:javax.servlet.http.HttpServletRequest的实例,该对象封装了一次请求,客户端的请求参数都被封装在该对象里。获取客户端请求参数必须使用该对象,常用的方法有getParameter(String paramName)、getParameterValues(String paramName)、setAttribute(String attrName,Object attrValue)、getAttribute(String attrName)和setCharacterEncoding(String env)等。
  •   response:javax.servlet.http.HttpServletResponse的实例,代表服务器对客户端的响应。通常很少使用该对象直接响应,而是使用out对象,除非需要生成非字符响应。而response对象常用于重定向,常用的方法有getOutputStream()、sendRedirect(java.lang.String.location)等。
  •   session:javax.servlet.http.HttpSession的实例,该对象代表一次会话。当客户端浏览器与站点建立连接时,会话开始;当客户端关闭浏览器时,会话结束。常用的方法有:getAttribute(String attrName)、setAttribute(String attName, Object attrValue)等。

 

详细说明:

  application对象代表web应用本身,因此使用application来操作web应用相关数据。application对象通常有如下两个作用:

  •   在整个web应用的多个JSP、Servlet之间共享数据。
    • 在JSP中设置和获取application中的变量的方法:applicatoin.setAttribute("demo","test"),application.getAttribute("demo");
    • 在Servlet中获取application中的变量:ServletContext sc = getServletConfig().getServletContext();sc.getAttribute("demo");
  •   访问web应用的配置参数。获取web.xml中的配置参数:application.getInitParameter("driver");。这些配置参数应该在web.xml文件中使用context-param元素配置,每个<context-param.../>元素配置一个参数,该元素有如下两个子元素。如:
<context-param>
    <param-name>url</param-name>
    <param-value>www.baidu.com</param-value>
</context-param>

  config对象代表当前JSP配置信息,但JSP页面通常无须配置,因此也就不存在配置信息。该对象在JSP页面中比较少用,但在Servlet中则用处相对较大,因为Servlet需要在web.xml文件中进行配置,可以指定配置参数。

  对所有的JSP页面,调用config.getServletName()返回的值都是jsp。也可以在web.xml文件中配置JSP(只是比较少用),这样就可以为JSP页面指定配置信息,并可为JSP页面另外配置一个URL。

  config对象是ServletConfig的实例,用于获取配置参数的方法是getInitParameter(String paramName)。配置JSP也是在web.xml文件中进行的,JSP被当成Servlet配置,如下:

<servlet>
    <!--指定Servlet名字-->
    <servlet-name>config<servlet-name>
    <!-- 指定将哪个JSP页面配置成Servlet -->
    <jsp-file>/config.jsp</jsp-file>
    <!-- 配置名为name的参数,值为luxl -->
    <init-param>
        <param-name>name</param-name>
        <param-value>luxl</param-value>
    </init-param>
</servlet>
<servlet-mapping>
    <!-- 指定将config Servlet配置到/config路径 -->
    <servlet-name>config</servlet-name>
    <url-pattern>/config</url-pattern>
</servlet-mapping>

  如果希望JSP页面可以获取web.xml配置文件中的配置信息,则必须通过为该JSP配置的路径来访问该页面,因为只有这也访问JSP页面才会让配置参数起作用。

  pageContext对象代表页面上下文,该对象主要用于访问JSP之间的共享数据。使用pageContext可以访问page、request、session、application范围的变量。

  它提供了两种方法访问page、request、session、application范围的变量。

  •   getAttribute(String name);取得page范围内的name属性。
  •   getAttribute(String name, int scope);取得指定范围内的name属性,其中scope可以是如下四个值:
    • PageContext.PAGE_SCOPE(=1):对应于page范围。
    • PageContext.REQUEST_SCOPE(=2):对应于request范围。
    • PageContext.SESSION_SCOPE(=3):对应于session范围。
    • PageContext.APPLICATION_SCOPE(=4):对应于application范围。

  与getAttribute()方法相对应的,PageContext也提供了2个对应的setAttribute()方法,用于将指定变量放入page、request、session、application范围内。

  pageContext还可用于获取其他内置对象:

  •   ServletRequest getRequest():获取request对象。
  •   ServletResponse getResponse():获取response对象。
  •   ServletConfig getServletConfig():获取config对象。
  •   ServletContext getServletContext():获取application对象。
  •   HttpSession getSession():获取session对象。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。