JSP  out输出对象及其他对象
除了上面介绍的这些对象之外,还存在另外以下对象,如输出对象out、页面对象page和异常对象Exception对象。本节将对这些对象做一个简单介绍。
1.out输出对象
服务器是怎么把信息在用户浏览器显示的呢?这由out对象来完成。虽然可以用表达式来完成输出,但是表达式最终也得转换成out对象输出。因为JSP页面中的表达式,经求值以后的结果将转换成String对象,随后该String对象被发送到out对象输出。
out对象的基类是JspWriter。out对象主要的方法是:print()方法和println()方法。两者区别在于print()方法输出完毕后,并不结束当前行,而println()方法在输出完毕后,会结束当前行。上述两种方法在JSP页面开发中经常用到,它们可以输出各种格式的数据类型,如字符型、整型、浮点型、布尔型甚至可以是一个对象,还可以是字符串与变量的混合型以及表达式。
out对象在前的介绍案例中已经多次用到,大家对它应该有一定的印象。它有一些常用的方法,如表3-8所示。
表3-8  out对象的常用方法
方法
说明
newLine()
输出一个换行符号
flush()
输出缓冲的数据
close()
关闭输出流,从而可以强制终止当前页面的剩余部分向浏览器输出
clearBuffer()
清除缓冲区里的数据,并把数据写到客户端
clear()
清除缓冲区里的数据,而不把数据写到客户端
getBufferSize()
获得缓冲区的大小,缓冲区的大小可用<%@ page buffer=”Size”%>设置
isAutoFlush()
返回布尔值,若是auto flush则返回true,否则返回false
getRemaining()
获得缓冲区没有使用的空间的大小
在JSP中out对象主要用来管理响应缓冲和向客户端输出内容。下面对它们进一步简要介绍。
(1)管理响应缓冲
在JSP页面中使用out.clear()方法清除缓冲区的数据时,类似于重置响应操作将会从新开始。如果响应已经提交,这会有产生IOException异常;相反,另外一种方法clearBuffer清除缓冲区的数据,即使内容已经提交,也可以使用该方法。此外,用户在使用过程中还可以用getRemaining方法获得缓冲区的当前状态。例如,下面是两行简单的代码:
out.print("<h3>欢迎访问:</h3>");
out.print("<h3>IT在中国</h3>");
上述两行代码的效果是在客户端的浏览器上输出两行文本。但是,程序实际在处理时是先将两行文本存放在缓冲区中,并非直接输出。这样就不用每次执行out.print()语句向客户端进行响应,所以加快了处理的速度。而实际的输出操作是等到JSP容器解析完整个程序后才把缓冲区的数据输出到客户端浏览器上。下面,我们在上述程序的后面添加一行程序,如下所示:
out.clearBuffer();
上述新增的out.clearBuffer()语句是用来清空缓冲区中的数据。所以输出到客户端浏览器上的将是空白。下面,将上述这个程序进行修改,具体如下所示:
out.clearBuffer();
out.print("<h3>欢迎访问:</h3>");
out.print("<h3>IT在中国</h3>");
执行上述程序,out.clearBuffer()将会清除执行至该行程序之前缓冲区中的数据,而接下来的out.print()语句将两行文本送到缓冲区中,最后显示在浏览器上。
response对象的flush()方法与clearBuffer()方法一样会清除缓冲区中的数据。不同的是,flush()方法会在清除之前先将缓冲区中的数据输出至客户端。
(2)向客户端输出内容
在使用Out对象时,会自动转换为java.io.PrintWriter对象,我们实际上使用的是PrintWriter对象,它是属于javax.servlet.JspWriter类实例。
为了区分response对象,JspWriter对象提供了几个将内容写入响应缓冲区的方法。由于JspWriter从java.io.Writer派生而来,java.io.Writer提供了一系列的写方法。因此,JspWriter本身也提供了一系列的print方法。对于每一个print方法,都有一个等效的println方法,在请求的数据显示到响应操作之后,该方法还会插入一个分行符。
2.exception异常对象
JSP页面在运行的时候,不可避免会发送运行时错误,如求取两个数相除的结果,第二个数不小心的输入为零,这样的例子很多。当JSP页面在执行过程中发生意外或错误时,会自动产生exception对象。exception对象是JSP的内置对象,可以直接使用该对象来查页面出错信息。exception对象是java.lang.Exception类的一个实例。如果一个JSP页面要应用此对象,就必须把isErrorPage设为true,否则无法编译。
exception对象常用方法如表3-9所示:
表3-9  exception对象常用方法
方法
说明
String getMessage()
返回描述异常的消息
String toString()
返回关于异常的简短描述消息
void printStackTrace()
显示异常及其栈轨迹
Throwable FillInStackTrace()
重写异常的执行栈轨迹
3.page页面对象和config配置对象
page和config是与Servlet有关的内置对象,page表示Servlet本身,而config对象则是存放Servlet的初始参数值。page对象代表JSP页面本身被编译生成的Servlet,所以它可以调用被Servlet类所定义的方法。它的类型是java.lang.Object,拥有page范围。page对象很少在JSP页面中使用。
page对象常用方法如表3-10所示:
表3-10  page常用方法
方法
说明
class getClass
返回此Object的类
int hashCode()
返回此Objecthash
boolean equals(Object obj)
判断此Object是否与指定的Object对象相等
void copy(Object obj)
把此Object拷贝到指定的Object对象中
Object clone()
克隆此Object对象
String toString()
把此Object对象转换成String类的对象
void notify()
唤醒一个等待的线程
void notifyAll()
唤醒所有等待的线程
void wait(int timeout)
使一个线程处于等待直到timeout结束或被唤醒
void wait()
使一个线程处于等待直到被唤醒
config对象是用来在一个Servlet初始化时,JSP引擎向它传递信息,此信息包括Servlet初始化时所要用到的参数(通过属性名和属性值构成)以及服务器的有关信息(通过传递一个ServletContext对象)。config对象被用于实现javax.servelt.ServletConfig接口,拥有page范围。
config对象常用方法如表3-11所示:
表3-11  config常用方法
方法
说明
ServletContext getServletContext()
返回含有服务器相关信息的ServletContext对象
String getInitParameter(String name)
返回初始化参数的值
Enumeration getInitParameterNames()
返回Servlet初始化所需所有参数的枚举

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。