java - 如何使用 sendirect() 方法将搜索查询从 servlet 传递到 jsp

标签 java mysql jsp servlets

我正在尝试在 servlet 中执行搜索查询并将其加载到 jsp 表的原始数据中。


    Connection dbCon = null;
    PreparedStatement state = null;
    ResultSet rs = null;
    String insert_sql = "insert into item(name,unit_price) values(?,?)";
    String search_sql = "select * from item";
    try {
        String item_name = request.getParameter("item_name");
        String up = request.getParameter("unit_price");
        try {
            dbCon = DB.JDBC.getConnection();
            state = dbCon.prepareStatement(insert_sql);
            dbCon.setAutoCommit(false);

            state.setString(1, item_name);
            state.setString(2, up);
            state.executeUpdate();

            dbCon.commit();


            rs = state.executeQuery(search_sql);
            while (rs.next()) {
                String item_id = rs.getString("item_id");
                String name = rs.getString("name");
                String unit_price = rs.getString("unit_price");
                String qty = rs.getString("qty");
                try {
                    response.sendRedirect("index.jsp?item_id=" + item_id + "&name=" + name + "&unit_price=" + unit_price + "&qty" + qty);
                } catch (Exception e) {
                    e.printStackTrace();
                }


            }
            response.sendRedirect("index.jsp?msg=New Item added successfully");
        } catch (Exception e) {
            e.printStackTrace();
            dbCon.rollback();
            out.close();
        }
    } catch (Exception e) {
        e.printStackTrace();
    }


插入工作正常。搜索的第一条记录也会加载到浏览器的搜索栏中。这是我的 jsp 查询。

               <tr>
                    <td><% request.getParameter("item_id");%></td>
                    <td><% request.getParameter("name");%></td>
                    <td><% request.getParameter("unit_price");%></td>
                    <td><% request.getParameter("qty");%></td>
                </tr>

我认为问题在于参数传递。我对 jsp 有点陌生。所以不知道所有的语法。请帮我。


编辑 1 我是这样改jsp的。

                <%
                    ResultSet rs = (ResultSet) session.getAttribute("rs");
                    while (rs.next()) {
                        String item_id = rs.getString("item_id");
                        String name = rs.getString("name");
                        String unit_price = rs.getString("unit_price");
                        String qty = rs.getString("qty");
                %>
                <tr>
                    <td><%=item_id%></td>
                    <td><%=name%></td>
                    <td><%=unit_price%></td>
                    <td><%=qty%></td>
                </tr>
                <%}%>
            </tbody>


还有这样的servlet

   rs = state.executeQuery(search_sql);

                session.setAttribute("rs", rs);
                response.sendRedirect("index.jsp"); //redirect to jsp without any params 

现在我在 jsp 中开始时的行中有 org.apache.jasper.JasperException。

这是错误。 enter image description here

最佳答案

加入你的servlet

request.setAttribute("rs",rs);

RequestDispatcher rd=request.getRequestDispatcher("your url");  
rd.forward(request, response); 

jsp页面

ResultSet rs = (ResultSet)request.getAttribute("rs");

<%while (rs.next()) {
    String item_id = rs.get(0);
    String name = rs.get(1);
    String unit_price = rs.get(2);
    String qty = rs.get(3);
    %>
    <tr>
      <td><%=item_id%></td>
      <td><%=name%></td>
      <td><%=unit_price%></td>
      <td><%=qty%></td>
    </tr>

关于java - 如何使用 sendirect() 方法将搜索查询从 servlet 传递到 jsp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29506779/

相关文章:

java - 如何阻止 jackson 的 YAML 编写器引用值

mysql - Dreamweaver/mysql 403 错误

java - 如何从另一个 Apache 服务器查找 Apache 服务器是否正在运行?

php - 格式正确的 MySQL 日期插入语句返回全 0

java - 使用 '<tr onclick=alertContents()>' 从 HTML 表中获取一行内容

html - 外部 css 中的样式 html 表不起作用

java - 了解 Spring Boot

java - 如何在eclipse中使用Java控制台更改字符串

javascript - javascript 完成后如何让 HtmlUnit 更新页面

mysql - 使用外键连接多个 MySQL 表