JSP内置对象

本文记录Java学习过程中遇到的JSP内置对象~

在JSP页面中,有一些对象需要频繁使用,如果每次都重新创建这些对象就会非常麻烦。为了简化Web应用程序的开发,JSP2.0规范中提供了9个隐式(内置)对象,它们是JSP默认创建的,可以直接在JSP页面中使用。

这9个隐式对象的名称、类型和描述如下表:

在上表中,列举了JSP的9个隐式对象及它们各自对应的类型。

1.out对象

在JSP页面中,经常需要向客户端发送文本内容。这时,可以使用out对象来实现。out对象是javax.servlet.jsp.JspWriter类的实例对象,它的作用与ServletResponse.getWriter()方法返回的PrintWriter对象非常相似,都是用于向客户端发送文本形式的实体内容。不同的是,out对象的类型为JspWriter,它相当于一种带缓冲功能的PrintWriter。

JSP页面的out对象与Servlet引擎提供的缓冲区之间的工作关系如下图所示:

从上图可以看出,在JSP页面中,通过out隐式对象写入数据相当于将数据插入到JspWriter对象的缓冲区中,只有调用了ServletResponse.getWriter()方法,缓冲区中的数据才能真正写入到Servlet引擎所提供的缓冲区中。

2.pageContent对象

在JSP页面中,使用pageContext对象可以获取JSP的其他8个隐式对象。pageContext对象是javax.servlet.jsp.PageContext类的实例对象,它代表当前JSP页面的运行环境,并提供了一系列用于获取其他隐式对象的方法。PageContext对象获取隐式对象的方法如下:

上表中列举了pageContext获取其他隐式对象的方法。这样,当传递一个pageContext对象后,就可以通过这些方法轻松地获取到其他8个隐式对象。

pageContext对象不仅提供了获取隐式对象的方法,还提供了存储数据的功能。pageContext对象存储数据是通过操作属性实现的,下表列举了pageContext操作属性的一系列方法:

上表列举了pageContext对象操作属性的相关方法。其中,参数name指定的属性名称,参数scope指定的是属性的作用范围。

pageContext对象的作用范围有4个值,具体如下:

  • PageContext.PAGE_SCOPE:表示页面范围;
  • PageContext.REQUEST_SCOPE:表示请求范围;
  • PageContext.SESSION_SCOPE:表示会话范围;
  • PageContext.APPLICATION_SCOPE:表示Web应用程序范围。

需要注意的是,当使用findAttribute()方法查找名称为name的属性时,会按照page、request、session和application的顺序依次进行查找。如果找到,则返回属性的名称,否则返回null。

标签: none