JSP中out对象的print()和println()方法

[b][b][b]在JSP中,通常在页面中显示结果,用的最多的非out.print()或者out.println()莫属了,这两种方式输出的结果一样吗?答案是否定的。
在没学Ajax之前,我也和大多数学Java的JSP程序员一样,认为print()和println()是一样的作用,因为在JSP页面中分别用这两个方法输出的结果是一样的呀!另外在用Java写的应用程序中System.out.print()不换行地输出结果, System.out.println()是换行地输出要输出的结果呀
从表面上来看,确实是这样的。在JSP网页中,用out.print()或者out.println()输出的结果显示在JSP页面上是一样的。事实上,他们两个输出的结果是不一样的,下面看两个实例来证明:[/b][/b][/b]
View.jsp页面:
[color=red]<%@ page c language="java"%>
<html>
<head>
<title>Print()和Println()的输出验证</title>
<script language="javascript" type="text/javascript">
<!--
var xmlHttp;
function createXMLHttpRequest(){
if(window.ActiveXObject){
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest){
xmlHttp = new XMLHttpRequest();
}
}
function getData()
{
createXMLHttpRequest();
var url = "showdata.jsp";
xmlHttp.open("GET",url,true);
xmlHttp.onreadystatechange = showResult;
xmlHttp.send(null);
}
function showResult(){
if(xmlHttp.readyState == 4){
if(xmlHttp.status == 200){
var result = xmlHttp.responseText;
alert(result);
//在这里弹出一个对话框,草榴社区显示返回的结果。在这里就可以看出,print()和println()的不同。
}
}
}
//-->
</script>
</head>
<body >
</body>
< ml>
Showdata.jsp页面:
<%@ page c language="java" %>
<%@ page import="java.sql.*"%>
<%
ResultSet rs = null;
Connection con = null;
PreparedStatement ps = null;
try
{
Class.forName("com.mysql.jdbc.Driver");
String url ="jdbc:mysql://localhost:3306/ajax";
con = DriverManager.getConnection(url,"root","tdy218");
String sql = "select * from printtest";
ps = con.prepareStatement(sql);
rs = ps.executeQuery();
while(rs.next())
{
out.println("<res>"+rs.getString("major")+"</res>"); //妞妞基地输出方式一、换行输出。
// out.print("<res>"+rs.getString("major")+"</res>"); //输出方式二、不换行输出。
}
con.close();
}
catch(Exception e)
{
System.out.print(e.getMessage());
}
%>[/color]
方式一的输出结果:

方式二的输出结果:


为了进一步证明我的结论,你也可以这样做(把上面那个Showdata.jsp的输出页面的输出对象改为System,在控制台输出,这样应该更有说服力):
[color=red]<%@ page c language="java" %>
<%@ page import="java.sql.*"%>
<%
ResultSet rs = null;
Connection con = null;
PreparedStatement ps = null;
try
{
//此教程来源于97xxoo教程网(www.97xxoo.org)\
//查看完整的教程请点:http://www.97xxoo.org/article/3/2008/20081114334.shtml
Class.forName("com.mysql.jdbc.Driver");
String url ="jdbc:mysql://localhost:3306/ajax";
con = DriverManager.getConnection(url,"root","tdy218");
String sql = "select * from printtest";
ps = con.prepareStatement(sql);
rs = ps.executeQuery();
while(rs.next())
{
System.out.println("<res>"+rs.getString("major")+"</res>"); //输出方式一、换行输出。
// System.out.print("<res>"+rs.getString("major")+"</res>"); //输出方式二、不换行输出。
}
con.close();
}
catch(Exception e)
{
System.out.print(e.getMessage());
}
%>[/color]
System.out.print()和System.out.println()的两种输出方式的输出结果:


总结:在JSP页面中,用out.println()这种方式输出结果本质上会换行,但是是写在程序片中输出的。JSP程序片又是可以写在HTML标签中的,这样就等于程序片中的内容以无标签(这里指的是html标签)的格式(纯文本格式)输出。所以输出的内容就没换行,要换行也得加html标签中的<p></p>或者<br>之类的标签。试验证明:以contentType设置成:text/xml(以XML格式显示数据)也一样满足我的结论。时间关系,就写这么多了。下面我简单的把XML格式的显示写法提一下:
JSP页面中这样写:写在while(rs.next())的上面。
response.setContentType("text/xml; charset=gbk");
response.setHeader("Cache-Control","no-cache");
out.println("<?xml version=\"1.0\" encoding=\"gbk\"?>");
Servlet里这样写:同样写在while(rs.next())的上面。
response.setContentType("text/xml; charset=gbk");
response.setHeader("Cache-Control","no-cache");
response.getWriter().write("<?xml version=\"1.0\" encoding=\"gbk\"?>");
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值