在simple_jsp类的_jspService方法中,既用到了out.write语句,又用到了out.print语句进行输出,它们有什么区别呢?在_jspService方法中查看out对象的定义,可以看到out对象的类型为JspWriter.在JSP API的帮助文档的javax.servlet.jsp包中,可以找到JspWriter的帮助信息,JspWriter继承了java.io.Writer。print方法是在子类JspWriter中定义的,writer方法是在父类Writer中定义的,重载的print方法可以将各种类型的数据转换成字符串的形式输出,而重载的writer系列方法中能输出字符、字符数组和字符串等与字符相关的数据。JspWriter类型的out对象使用print方法和write方法都可以输出字符串,但是,如果字符串对象的值为null,print方法输出内容为“null”的字符串,而wirte方法则会抛出NullPointerException异常。编写一个内容如下的test.jsp文件,分别注释掉out.print与out.writer两条语句中的一条,查看各自的运行结果,就可以看到这种区别了。
文件清单:test.jsp
<%String strTest = null;
out.print(StrTest);
out.writer(strtest);
%>