浏览器访问tomcat出了大问题。。(急急急)

kongling0828 2011-04-14 04:42:54
源码:
package com.dingyi;

import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Test extends HttpServlet
{
Connection ct=null;
Statement ps=null;
ResultSet rs=null;
public void doGet(HttpServletRequest req, HttpServletResponse res)
{

try{
res.setContentType("text/html;charset=gbk");
PrintWriter pw=res.getWriter();

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
ct = DriverManager.getConnection("jdbc:sqlserver://localhost:1433; DatabaseName=sample", "sa", "12587410");
ps=ct.createStatement();
rs=ps.executeQuery("select * from users");
while(rs.next())
{
String userID=rs.getString(1);
String userName=rs.getString(2);
String passwd=rs.getString(3);
String email=rs.getString(4);
int grade=rs.getInt(5);

pw.println("<html>");
pw.println("<body>");
pw.println("<center>");
pw.println("<table border=1>");
pw.println ("<tr><th>id</th><th>name</th><th>password</th><th>Email</th><th>grade</th></tr>");

pw.println("<tr>");
pw.println("<td>"+userID+"</td>");
pw.println("<td>"+userName+"</td>");
pw.println("<td>"+passwd+"</td>");
pw.println("<td>"+email+"</td>");
pw.println("<td>"+grade+"</td>");
pw.println("</tr>");

pw.println("</table>");
pw.println("</center>");
pw.println("</body>");
pw.println("</html>");

}

pw.println("connection ok~");


}
catch(Exception e)
{
e.printStackTrace();
}
finally{

this.close();
}
}
public void close()
{
try
{
if(rs!=null)
{
rs.close();
}
if(ps!=null)
{
ps.close();
}
if(ct!=null)
{
ct.close();
}
}
catch(Exception e)
{
e.printStackTrace();
}

}
}


当不要源码中pw.println("<html>"); pw.println("</html>");
的时候,运行结果只有 connection ok~
当要源码中的pw.println("<html>"); pw.println("</html>");
的时候,运行结果就是一篇空白!!!!!!!!!!!!!

我在数据库中插入了六条数据!!!!不应该是上面这种结果啊~~~~

我用的是tomcat6.0 数据库是sqlsever 2005。请问各位高手这到底是怎么回事啊?

哦!还有,就是浏览器运行结果除了上面的问题没有报任何错误。而且代码还是用eclipse编译的!代码也没报错。
要是各位高手你们电脑上安装得有tomcat,帮我这个新手调试调试吧~~


...全文
120 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hemingwang0902 2011-04-14
  • 打赏
  • 举报
回复
汗,还有这样提问的
kongling0828 2011-04-14
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zyz1985 的回复:]

明显不对劲。。。。。
你的Servlet 并没有输出这样的字符<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
你是不是访问地址搞错了,断点下有无走那个类。。。。。
[/Quote]

这个什么意思啊?访问地址没搞错,也没弄丢什么那个类~
kongling0828 2011-04-14
  • 打赏
  • 举报
回复
郁闷。。ct = DriverManager.getConnection("jdbc:sqlserver://localhost:1433; DatabaseName=sample", "sa", "12587410");这里的sample写错了,应该是student。可是改了后还是空白啊~哦~在eclipse中调试了,代码是:
package com.dingyi;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class test {
public static void main(String args[])
{
Connection ct=null;
Statement ps=null;
ResultSet rs=null;
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
ct = DriverManager.getConnection("jdbc:sqlserver://localhost:1433; DatabaseName=student", "sa", "12587410");
ps=ct.createStatement();
rs=ps.executeQuery("select * from users");
while(rs.next())
{
String userID=rs.getString(1);
String userName=rs.getString(2);
String passwd=rs.getString(3);
String email=rs.getString(4);
int grade=rs.getInt(5);

System.out.print("用户列:"+userID+"");
System.out.print(" "+"姓名:"+userName+"");
System.out.print(" "+"密码:"+passwd+"");
System.out.print(" "+"电邮:"+email+"");
System.out.println(" "+"等级:"+grade+"");
}
}
catch(Exception e)
{
e.printStackTrace();
}
finally{
try
{
rs.close();
ps.close();
ct.close();

}
catch(Exception e)
{
e.printStackTrace();
}

}
}




}


结果是:

用户列:1 姓名:admin 密码:admin 电邮:admin@163.com 等级:1
用户列:2 姓名:shunping 密码:shunping 电邮:shunping@163.com 等级:1
用户列:3 姓名:test1 密码:test1 电邮:test1@163.com 等级:5
用户列:4 姓名:test2 密码:test2 电邮:test2@163.com 等级:5
用户列:5 姓名:test3 密码:test3 电邮:test3@163.com 等级:5
用户列:6 姓名:test4 密码:test4 电邮:test4@163.com 等级:5
用户列:7 姓名:test5 密码:test5 电邮:test5@163.com 等级:5

游一游走一走 2011-04-14
  • 打赏
  • 举报
回复
明显不对劲。。。。。
你的Servlet 并没有输出这样的字符<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
你是不是访问地址搞错了,断点下有无走那个类。。。。。
magicluo 2011-04-14
  • 打赏
  • 举报
回复
我靠

你调试的逻辑不清楚?

你先要确定你 rs 到底有没有数据 你直接 System.out.println(userID); 类似的打印结果不就完了

如果能打印出来 ,那就是你servlet输出你的html标签嵌套错误出现了问题

一步一步排查

kongling0828 2011-04-14
  • 打赏
  • 举报
回复
我照楼上的把循环体的位置改了之后还是一样啊!!!哦~查看源码的结果是
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=gb2312"></HEAD>
<BODY></BODY></HTML>
游一游走一走 2011-04-14
  • 打赏
  • 举报
回复
不是没有东西,是东西过多不符合HTML规范,输出的内容浏览器不能够正常解析吧了,你右键查看下浏览器页面的源码,就会看到问题所在。。。。
magicluo 2011-04-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ylz2007 的回复:]
注意位置啊:

pw.println("<html>");
pw.println("<body>");
pw.println("<center>");
pw.println("<table border=1>");
pw.println ("<tr><th>id</th><th>name</th><th>password</th><th>Email</th><th>grade</th>……
[/Quote]

这是是正解

你循环放里面啊..
  • 打赏
  • 举报
回复
注意位置啊:

pw.println("<html>");
pw.println("<body>");
pw.println("<center>");
pw.println("<table border=1>");
pw.println ("<tr><th>id</th><th>name</th><th>password</th><th>Email</th><th>grade</th></tr>");
while(rs.next())
{

String userID=rs.getString(1);
String userName=rs.getString(2);
String passwd=rs.getString(3);
String email=rs.getString(4);
int grade=rs.getInt(5);

pw.println("<tr>");
pw.println("<td>"+userID+"</td>");
pw.println("<td>"+userName+"</td>");
pw.println("<td>"+passwd+"</td>");
pw.println("<td>"+email+"</td>");
pw.println("<td>"+grade+"</td>");
pw.println("</tr>");


}


pw.println("</table>");
pw.println("</center>");
pw.println("</body>");
pw.println("</html>");
小绵羊 2011-04-14
  • 打赏
  • 举报
回复
pw.println("<html>"); pw.println("</html>");...写到循环外面...
另外检查下查询结果集是不是空的...
小二郎 2011-04-14
  • 打赏
  • 举报
回复
tomcat运行的信息贴出来

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧