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() | 返回此Object的hash码 |
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小时内删除。
发表评论