Java 如何正确地将数据从Servlet传递到JSP?

Java 如何正确地将数据从Servlet传递到JSP?,java,jsp,servlets,Java,Jsp,Servlets,我需要将数据从Servlet(它从DAO获得)传递到JSP。错误的数据最终出现在JSP中(Servlet的html代码开销)。它是如何在那里结束的?如何正确处理这种情况? Servlet: @Override public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { String reqId

我需要将数据从Servlet(它从DAO获得)传递到JSP。错误的数据最终出现在JSP中(Servlet的html代码开销)。它是如何在那里结束的?如何正确处理这种情况?

Servlet:

@Override
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws IOException, ServletException {

String reqId = request.getParameter("id");
        Integer reqIdInt = null;
        String tempHTML = "";

        try {
            reqIdInt = Integer.parseInt(reqId);
            } catch (NumberFormatException e) {    }
        /**
         * findById()
         */
        if (reqIdInt != null) {
            // s?id=.....
            DSLR dslr = dslrDAO.findById(reqIdInt);

            if(dslr != null){
                tempHTML ="<form action=\"s?action=save\" method=\"POST\">\n" +
                        "\n" +
                        "<input type=\"hidden\" name=\"id\" value=\""+dslr.getDslrId()+"\">\n" +
                        "\n" +
                        "\n" +
                        "<table bgcolor=\"#000000\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody><tr><td><table  border=\"0\" cellpadding=\"2\" cellspacing=\"1\">\n" +
                        "<tbody><tr bgcolor=\"#ffffff\"><td bgcolor=\"#cccccc\" nowrap=\"\">id:</td><td>"+dslr.getDslrId()+"</td></tr>\n" +
                        "<tr bgcolor=\"#ffffff\"><td bgcolor=\"#cccccc\" nowrap=\"\">model:</td><td>&nbsp;<b><font color=\"#0000ff\"><input type=\"text\" value=\""+dslr.getModel()+"\" name=\"model\"></font></b></td></tr>\n" +
                        "<tr bgcolor=\"#ffffff\"><td bgcolor=\"#cccccc\" nowrap=\"\">price:</td><td>&nbsp;<b><font color=\"#0000ff\"><input type=\"text\" value=\""+dslr.getPrice()+"\" name=\"price\"></font></b></td></tr>\n" +
                        "<tr bgcolor=\"#ffffff\"><td bgcolor=\"#cccccc\" nowrap=\"\">description:</td><td>&nbsp;<b><font color=\"#0000ff\"><textarea name=\"description\" cols=\"25\" rows=\"6\">"+dslr.getDescription()+"</font></b></td></tr>\n" +
                        "</tbody></table></td></tr></tbody></table>\n" +
                        "<input type=\"submit\" value=\"savedata\">\n" +
                        "</form>" +
                        "<tr><td>" + dslr.getDslrId() +
                        "</td><td>" + dslr.getModel() +
                        "</td><td>" + dslr.getPrice() +
                        "</td><td><a href=\"javascript:get_dslr(" + dslr.getDslrId() + ") target=\"_self\"\">" + dslr.getDescription() +
                        "</td><td><a href=\"" + "s?id=" + dslr.getDslrId() + "\">modify</a></td></tr>";

//                request.getSession().setAttribute("generatedResponse",tempHTML);
                request.setAttribute("generatedResponse",tempHTML);
                request.getRequestDispatcher("/dslrs.jsp").forward(request, response);
            }
}
新JSP:

铬:

    String reqId = request.getParameter("id");
    Integer reqIdInt = null;
    String tempHTML = "";

    try {
        reqIdInt = Integer.parseInt(reqId);
        } catch (NumberFormatException e) {    }
    /**
     * findById()
     */
    if (reqIdInt != null) {
        // s?id=.....
        DSLR dslr = dslrDAO.findById(reqIdInt);

        if(dslr != null){
            tempHTML = "<form action=\"s?action=save\" method=\"POST\">\n" +
                    "<input type=\"hidden\" name=\"id\"  value=\""+dslr.getDslrId()+"\">\n" +
                    "\t<table class=\"table\" bgcolor=\"#000000\" border=\"0\">\n" +
                    "\t\t<tr>\n" +
                    "\t\t\t<td>id:</td>\n" +
                    "\t\t\t<td>"+dslr.getDslrId()+"</td>\n" +
                    "\t\t</tr>\n" +
                    "\t\t<tr>\n" +
                    "\t\t\t<td>model:</td>\n" +
                    "\t\t\t<td><input type=\"text\" name=\"dslr_model\" value=\""+dslr.getModel()+"\"></td>\n" +
                    "\t\t</tr>\n" +
                    "\t\t<tr>\n" +
                    "\t\t\t<td>price:</td>\n" +
                    "\t\t\t<td><input type=\"text\" name=\"dslr_price\" value=\""+dslr.getPrice()+"\"></td>\n" +
                    "\t\t</tr>\n" +
                    "\t\t<tr>\n" +
                    "\t\t\t<td>description:</td>\n" +
                    "\t\t\t<td><textarea name=\"dslr_description\" cols=\"30\" rows=\"10\">"+dslr.getDescription()+"</textarea></td>\n" +
                    "\t\t</tr>\n" +
                    "\t</table>\n" +
                    "</form>\n" +
                    "<input type=\"submit\" value=\"saveform\">" ;

            request.getSession().setAttribute("generatedResponse",tempHTML);
            request.setAttribute("generatedResponse",tempHTML);
            request.getRequestDispatcher("/dslrs.jsp").forward(request, response);
        }else {
            // SQLException
        }

        /**
         *  findAll()
          */
    } else {

        List<DSLR> dslrs = dslrDAO.findAll();
        if (dslrs != null) {
            tempHTML = "<table class=\"table\" bgcolor=\"#000000\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n" +
                    "    <tr bgcolor=\"#FFFFFF\" nowrap=\"\">\n" +
                    "        <td>Id</td>\n" +
                    "        <td>Model</td>\n" +
                    "        <td>Price</td>\n" +
                    "    </tr>\n" ;
            for (Iterator<DSLR> dslrIterator = dslrs.iterator(); dslrIterator.hasNext(); ) {
                DSLR next = dslrIterator.next();
                tempHTML += "<tr><td>" + next.getDslrId() +
                        "</td><td>" + next.getModel() +
                        "</td><td>" + next.getPrice() +
                        "</td><td><a href=\"javascript:get_dslr(" + next.getDslrId() + ") target=\"_self\"\">description " +
                        "</td><td><a href=\"" + "s?id=" + next.getDslrId() + "\">modify</a></td></tr>";
            }
            tempHTML += "</table>";

            request.getSession().setAttribute("generatedResponse",tempHTML);
            request.setAttribute("generatedResponse",tempHTML);
            request.getRequestDispatcher("/dslrs.jsp").forward(request, response);
        }else {
            //SQLException
        }
    }

您不能自定义
textarea
的字体。所以就这样吧

<tr bgcolor=\"#ffffff\"><td bgcolor=\"#cccccc\" nowrap=\"\">description:</td><td>&nbsp;<textarea name=\"description\" cols=\"25\" rows=\"6\">"+dslr.getDescription()+"</td></tr>
description:“+dslr.getDescription()+”

您可以在jsp中使用来避免Scriptlet:
{generatedResponse}
又是1999年吗?我认为在Servlet中使用HTML和CSS在当时是不可信的。我将HTML放在Javascript中,只返回一个标志,以便在jQuery中隐藏/显示它。下次使用搜索功能:)@MironBalcerzak,事实上我使用了,代码的某些部分在这里
${generatedResponse}
<tr bgcolor=\"#ffffff\"><td bgcolor=\"#cccccc\" nowrap=\"\">description:</td><td>&nbsp;<textarea name=\"description\" cols=\"25\" rows=\"6\">"+dslr.getDescription()+"</td></tr>