java servlet 页面显示不全。

发布于 2022-09-06 09:28:16 字数 4719 浏览 21 评论 0

在学习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'>&nbsp;</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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

清浅ˋ旧时光 2022-09-13 09:28:16

flush public abstract void flush() throws IOExceptionFlush
Flush the stream. If the stream has saved any characters from the various write() methods in a buffer, write them immediately to their intended destination. Then, if that destination is another character or byte stream, flush it. Thus one flush() invocation will flush all the buffers in a chain of Writers and OutputStreams.
The method may be invoked indirectly if the buffer size is exceeded.

Once a stream has been closed, further write() or flush() invocations will cause an IOException to be thrown.

可能是字符串超出缓存区了,自己算算,在合适的地方调用out.flush()吧.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文