java servlet 页面显示不全。
在学习java ee的时候。用事例的代码跑项目的时候出现显示不全的问题,重启电脑和服务器都无果。找了很久的毛病都没有找到,特来请教大家,还望大家能够解答,谢谢!
下面上代码:
if(isUserExist){
req.setAttribute("login", loginValue);
try {
getOrderList(req, resp);
} catch (SQLException e) {
e.printStackTrace();
}
displayMyStocklistPage(req, resp);
}else{
displayErrorPage(req,resp);
}
在这个servlet中调用了(displayMystocklistPage )这两个方法来画界面。
下面是方法内容:
public void displayMyStocklistPage(HttpServletRequest req, HttpServletResponse res) throws IOException {
ArrayList list = (ArrayList) req.getAttribute("list"); // resp.sendRedirect(req.getContextPath()+"/MyStockList");
boolean isItemOut = false;
PrintWriter out = res.getWriter();
//用本地的out查看内容
//PrintStream out = null ; // 声明打印流对象
// 如果现在是使用FileOuputStream实例化,意味着所有的输出是向文件之中
// out = new PrintStream(new FileOutputStream(new File("/Users/insomnialee/Downloads/Sample-20171227/sample2/web/test.txt"))) ;
out.println("<html><head>");
out.println("<script src=\"https://ajax.googleapis.com/ajax/libs/angularjs/1.6.6/angular.min.js\"></script>\n" +
" <style>\n" +
" table, th , td {\n" +
" border: 1px solid grey;\n" +
" border-collapse: collapse;\n" +
" padding: 5px;\n" +
" }\n" +
" table tr:nth-child(odd) {\n" +
" background-color: #f1f1f1;\n" +
" }\n" +
" table tr:nth-child(even) {\n" +
" background-color: #ffffff;\n" +
" }\n" +
" </style>\n" +
"</head>\n" +
"<body>");
out.println("<table width='650' border='0' >");
out.println("<tr>");
out.println("<td width='650' height='80' background='" + req.getContextPath() + "/image/top.jpg'> </td>");
out.println("</tr>");
out.println("</table>");
out.println("<p>Welcome " + req.getAttribute("login") + "</p>");
out.println("My Order List: ");
out.println("<br>");
out.println("<table>");
out.println("<tr>"+
"<td>"+"日期"+"</td>"+
"<td>"+"id"+"</td>"+
"<td>"+"商品名称"+"</td>"+
"<td>"+"数量"+"</td>"+
"<td>"+"总价"+"</td>"+
"<td>"+"商品状态"+"</td>"+
"</tr>");
for (int i = 0; i < list.size(); i++) {
Order order = (Order) list.get(i);
out.println("<tr>"+
"<td>"+order.getDate().toString()+"</td>"+
"<td>"+order.getUid()+"</td>"+
"<td>"+order.getCname()+"</td>"+
"<td>"+order.getCnum()+"</td>"+
"<td>"+order.getPrice()+"</td>"
);
if(order.getIsout()==0){
isItemOut = true;
out.println("<td>"+"-缺货中-"+"</td>");
}else{
out.println("<td>"+"-正常-"+"</td>");
}
out.println("</tr>");
}
out.println("</table>");
// out.println("</p>");
if(isItemOut){
out.println("<p style=\"color:red\"> 您订单中有部分商品缺货! </p>");
}
out.println("Click <a href='" + res.encodeURL(req.getRequestURI()) + "'>here</a> to reload this page.<br>");
out.println("<form method='GET' action='" + res.encodeURL(req.getContextPath() + "/Login") + "'>");
out.println("<input value='Logout'>");
out.println("</form>");
out.println("<p>Servlet is version @version@</p>");
out.println("</body></html>");
//displayout page
//out.close();
}
最后展示出来的界面是这样的
//插图老是失败,用文字描述下吧,最后的界面中没有代码最后<input>和<p>这两个标签。客户端接收到的html中只有一个空的<form>,而在我测试的时候发现,删去后面的一些展示代码。前面本来能够正常显示的甚至还会变得不正常显示。我也做了将输出输出到txt然后在当成html文件打开的办法,这样测试出来的界面是正常的。所以怀疑是通信有大小限制,在out中查看的时候,又看到没有达到limit的限制值(8192),,希望过来人能够指点迷津,,谢谢!!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Once a stream has been closed, further write() or flush() invocations will cause an IOException to be thrown.
可能是字符串超出缓存区了,自己算算,在合适的地方调用out.flush()吧.