out.print和out.write

问题:

这是一个JSP页面:
<%@ page language="java" import="java.util.*"  %>
<%@ page pageEncoding="UTF-8" isELIgnored="false" %>
<%@ page import="java.util.Date" %>

<html>
  <head> 
    <title>  </title>
  </head>  
  <body>
 	<h1>现在时间:</h1>
 	<%=new Date() %>
  </body>
</html>

转译后生成的servlet,对应的body中,有以下代码:
out.write("<h1>现在时间:</h1>\n");
out.print( new Date());


思考:
<%=  %>表达式代表的是什么? 为什么 new Date()后,没有 “;”(分号)?
servlet中,out.write() 和 out.print() 有何区别?

解答:
There is a method print(Object). There is no method write(Object)
write(String) exists however.
serch the javaAPI you will find
------------------------------------------
(java中)有这个方法:print(Object),没有这个方法:write(Object)
但是却有这个方法:write(String)
查找javaAPI,你便会发现。

总结:
out.print()方法,可以输出一个java对象;
out.write()方法,只能输入一个字符串。


参考资料:
jsp中的out对象是JspWriter类型的.而JspWriter继承了java.io.Writer .

out对象的write方法是在在父类Writer中定义的,print方法是在子类JspWriter中定义的.
重载的print方法可以将各种类型的数据转换成字符串的形式输出.
而重载的write方法只能输出字符/字符数组/字符串等与字符相关的数据.

而且如果使用这两种方法输出值为null的字符串对象,
那么print方法输出的结果是"null",
而write方法则会抛出NullPoiterException异常.






引自:
http://bbs.csdn.net/topics/300007142
http://wenwen.soso.com/z/q152174496.htm


--

你可能感兴趣的:(jsp,servlet,out.write,out.print)