您的位置:首页 > Web前端 > JavaScript

JSP的隐含对象

2016-07-18 14:51 561 查看
    在JSP容器生成的Servlet类的_jspService()方法中,定义了几个对象,而这些对象就是我们在编写JSP页面时,可以使用的隐含对象。要注意的是,因为这些隐含对象是在_jspService()方法中定义的,所以我们只能在脚本段和表达式中使用这些对象。
    在JSP页面中,总共有9个隐含对象:



    1.1 pageContext
    pageContext对象提供了访问其他隐含对象的方法:
    ▶public abstract javax.servlet.ServletRequest getRequest()
    ▶public abstract javax.servlet.ServletResponse getResponse()
    ▶public abstract javax.servlet.http.HttpSession getSession()
    ▶public abstract javax.servlet.ServletContext getServletContext()
    ▶public abstract JspWriter getOut()
    ▶public abstract javax.servlet.ServletConfig getServletConfig()
    ▶public abstract java.lang.Object getPage()
    ▶public abstract java.lang.Exception getException()
    在pageContext对象中,可以使用两个方法来保存和获取属性:
    ▶public abstract void
setAttribute(java.lang.String name,java.lang.Object value)
    ▶public
abstract java.lang.Object getAttribute(java.lang.String name)
    在pageContext对象中保存的属性,只能在当前页面中去获取,也就是说,pageContext对象具有页面范围。
    利用pageContext对象,还可以设置和得到在其他范围对象中保存的属性:
 
  ▶public abstract void setAttribute(java.lang.String name,java.lang.Object value,int scope)
 
  ▶public abstract java.lang.Object getAttribute(java.lang.String name,int scope)
    其中scope参数用来指定要获取哪一个范围对象的属性,有四个可能的取值,其中PageContext.PAGE_SCOPE表示页面范围,PageContext.REQUEST_SCOPE表示请求范围,PageContext.SESSION_SCOPE表示会划范围,PageContext.APPLICATION_SCOPE表示WEB应用程序范围。
    在PageContext对象中,有两个方法来删除范围中的属性:
 
  ▶public abstract void removeAttribute(java.lang.String name,int scope)删除指定范围内名字为name的属性。
 
  ▶public abstract void removeAttribute(java.lang.String name)删除所有范围内名字为name的属性。
    PageContext对象还提供了搜索属性的方法:
 
  ▶public abstract java.lang.Objedt findAttribute(java.lang.String name)该方法会按照page,request,session和application范围的顺序搜索指定名字的属性,如果找到则返回属性的值,如果没有找到,则返回null。
    PageContext对象也提供了请求转发的两个方法forward()和include(),其中内部实现是调用RequestDispatcher对象的forward()和include()方法。
    2.2 out
    out对象的类型是javax.servlet.jsp.JspWriter,该类从java.io.Writer类派生,以字符流的形式输出数据。out对象实际上是PrintWriter对象的带缓冲的版本(在out对象内部使用PrintWriter对象来输出数据),可以通过page指令的buffer属性来调整缓冲区的大小,默认的缓冲区是8kb。
    在out对象中,提供了几个和缓冲区操作相关的方法:
    ▶public abstract void clear() throws java.io.IOException 清除缓冲区中的内容。如果缓冲区已经被刷新,将抛出IOException异常。
    ▶public abstract void clearBuffer() throws java.io.IOException 清除缓冲去中的当前内容。这个方法和clear()方法的区别是,如果缓冲区已经被刷新,这个方法不会抛出IOException异常。
    ▶public abstract void close() throws java.io.IOException 刷新缓冲区,关闭输出流。注意,在编写JSP页面时,不需要显示地去掉用这个方法,因为在JSP容器所生成的代码中会自动包含对close()方法的调用。
    ▶public int getBufferSize() 获取out对象使用的缓冲区的大小。
    ▶public abstract int getRemaining() 获得缓冲区中未使用的字节数。
    ▶public boolean isAutoFlush() 判断out对象是否是自动刷新。
    out对象针对不同的数据类型,提供了多个重载的print()和println()方法,用于输出数据。要注意的是,虽然println()方法会输出一个换行,但是客户端的浏览器在显示页面时会忽略输出的换行。
    3.3 page
    page对象是当前页面转换后的Servlet类的实例。从转换后的Servlet类的代码中,可以看到这种关系:
Object page = this;
    4.4 exception
    exception对象表示了JSP页面运行时产生的异常,该对象只有在错误页面(在page指令中指定属性isErrorPage=true的页面)中才可以使用。
    在JSP页面中,可以利用page指令的errorPage属性指定一个错误处理页面,当JSP页面运行发生错误时,JSP容器会自动调用指定的错误处理页面。如果一个JSP页面使用errorPage属性定义了错误页面,那么在web.xml文件中定义的任何错误页面将不会被使用。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: