out.write()和out.print()都可以用于向浏览器输出内容。
out对象的类型是JspWriter。JspWriter继承了java.io.Writer类。
两个方法的区别是:
1)write()方法是Write类的方法,而print()是JSP内置类out的方法。
2)重载的print方法可将各种类型的数据转换成字符串的形式输出,而重载的write方法只能输出字符、字符数组和字符串等与字符相关的数据。
3)JspWriter类型的out对象使用print方法和write方法都可以输出字符串,但是,如果字符串对象的值为null时,print方法将输出内容为“null”的字符串,而write方法则是抛出NullPointerException异常。
验证1):
在tomcat服务器中,创建test.jsp文件,部署到tomcat安装目录的webapps\jsplearn下,代码如下:
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<html>
<body>
<%
out.print();
out.write();
%>
</body>
</html>
启动tomcat,访问该文件,出现报错:
验证结果是:write()方法是Write类的方法,而print()是JSP内置类out的方法
。
验证2):
修改test.jsp文件如下:
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<%@ page import="java.lang.*" %>
<html>
<body>
<%
Integer i = new Integer(11);
String s = "abc";
out.print(i);
out.println("<br>");
out.write(i);
out.println("<br>");
out.print(s);
out.println("<br>");
out.write(s);
%>
</body>
</html>
访问显示:
显示表明,write()方法对于非字符数据不能正确显示。
验证结果是:重载的print方法可将各种类型的数据转换成字符串的形式输出,而重载的write方法只能输出字符、字符数组和字符串等与字符相关的数据。
验证3):
修改test.jsp为:
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<%@ page import="java.lang.*" %>
<html>
<body>
<%
String s = null;
out.print(s);
%>
</body>
</html>
访问显示为:
修改test.jsp为:
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<%@ page import="java.lang.*" %>
<html>
<body>
<%
String s = null;
out.write(s);
%>
</body>
</html>
出现异常:
验证结果是:JspWriter类型的out对象使用print方法和write方法都可以输出字符串,但是,如果字符串对象的值为null时,print方法将输出内容为“null”的字符串,而write方法则是抛出NullPointerException异常。