当前位置: 首页 > 知识库问答 >
问题:

将结果集值从servlet显示到jsp

卞嘉许
2023-03-14

我需要帮助将结果集值从servlet转发到jsp,而不使用JSTL实现

工作流程:

  1. 用户在输入框中输入值并单击搜索按钮
  2. 单击搜索时会调用servlet。servlet专注于数据库实现并将结果集值转发到请求所在的同一jsp页面。

问题:我的结果集大小是3,但仅表顶部的值就打印在我的jsp页面中。其余2个值缺失。我希望所有的值都打印在我的jsp页面中。

这是我的代码:

Productlist.jsp

<%@page import="java.util.List"%>
<%@page import="web.Products"%>
<%@page import="java.util.ArrayList"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
       <title>Products</title>
</head>

<body>
 <form method="post" align="center" action="ProductList">

Company Name:<input type="text" size="20" id="company" name="company" />
<input type="submit" value="search"/>
  <%
  List<Products> pdts = (List<Products>) request.getAttribute("list");
  if(pdts!=null){
    for(Products prod: pdts){
       out.println("<br/>" + prod.getProductname());
     }
  }
%>

</form>
</body>
</html>

Products.java

public class Products {
    private String productname;
    public String getProductname() {
        return productname;
    }
    public void setProductname(String productname) {
        this.productname=productname ;
    }
}

产品列表。java(servlet代码)

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.http.HttpSession;


public class ProductList extends HttpServlet {

    static final String dbURL = "jdbc:mysql://localhost:3306/pdt";
    static final String dbUser = "root";
    static final String dbPass = "root";

    @Override
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8"); 
        PrintWriter out = response.getWriter();
        ResultSet rs = null;
        Connection connection = null;   
        List<Products> pdt = new ArrayList<Products>();

        try{
            String company =request.getParameter("company");
            Class.forName("com.mysql.jdbc.Driver");
            connection = DriverManager.getConnection (dbURL,dbUser,dbPass);
            String sql="select product_pck from comp_pdt_list where company_name='"+company+"'";
            PreparedStatement prep = connection.prepareStatement(sql); 
            rs=prep.executeQuery();

            while(rs.next()) { 
                Products prod=new Products();
                prod.setProductname(rs.getString("product_pck"));
                pdt.add(prod);
                request.setAttribute("list",pdt);
                RequestDispatcher rd=request.getRequestDispatcher("Productlist.jsp");    
                rd.forward(request,response); 
                return;
            }

            prep.close();
        } catch(Exception E) {
            //Any Exceptions will be caught here
            System.out.println("The error is"+E.getMessage());
        } finally {
            try {
                connection.close();
            } catch (Exception ex) {
                System.out.println("The error is" + ex.getMessage());
            }
        }
    }
}

共有1个答案

皇甫敏达
2023-03-14

在while循环中设置要请求的属性。因此,“列表”只包含一种产品。(方法在第一次迭代时返回)

将产品添加到while循环中的列表中,并仅在while循环之后设置列表(请求属性)。

以下应该可以修复它:

while(rs.next()){ 
        Products prod=new Products();
          prod.setProductname(rs.getString("product_pck"));
          pdt.add(prod);           
}
request.setAttribute("list",pdt);

RequestDispatcher rd=request.getRequestDispatcher("Productlist.jsp");    
rd.forward(request,response); 
 类似资料:
  • 问题内容: 这是我的问题:我需要存储 很多 日志消息,并认为将其保存在SQLite3数据库中以能够轻松搜索和过滤它是明智的。 我将在标准列表窗口小部件(使用wxWidgets)中显示日志消息。该列表将包含几列,用户可以对其进行排序和过滤。 现在,我不确定什么是最好的处理方式。我正在考虑一些可能的解决方案: 将所有消息读取到内存。当有新的或更改的日志消息时(在列表中的任意位置),必须刷新整个列表。当

  • 我需要帮助在不使用JSTL实现的情况下将结果集值从servlet添加到jsp中的复选框中 工作流程: 1.用户在文本框中输入一个值,然后单击搜索按钮 2.单击“搜索”后,将调用servlet。servlet专注于数据库实现,并将结果集值转发到来自请求的同一jsp页面。 3.结果集值应以jsp中复选框的形式显示 问题: 结果集值将打印在我的jsp页面中。我需要在jsp页面中将结果集值显示为复选框值,

  • 我正在尝试将某些值从servlet传递到JSP页面,并添加已传递到标记的值,阅读了许多文章,我得到了以下代码。 使用输入页面选择文件 验证上传的文件 调用上传。java将上传的文件保存在WEB-INF中 在上载的文件中,选定的文件保存为“我的”。txt 使用缓冲区读取文件内容并将其保存到变量 将其传递到JSP页面 上载JAVA 上传文件后, mypage.jsp 现在,当我点击上传按钮完成所有这些

  • 我对html和java非常陌生。 我有一个java函数 代码如下: 以下是我输入的html代码: 例如 超文本标记语言: JAVA:

  • 我是jQuery新手,在jsp中将数据从servlet显示到jqGrid时遇到了困难。我使用google gson将数据从ArrayList转换为字符串变量json。当我运行项目时,它在控制台中显示json数据,并显示一个空网格。 Student.java 学生数据服务。JAVA 我的servlet代码: ervlet.java 我的JSP页面: 滑溜的网格演示。jsp

  • 我正在从数据库中读取pdf文件列表,对它们进行解析,并用它们执行一些任务 当我阅读这个pdf列表时,我发现从pdf中提取图像需要花费更多的时间,而且我不需要阻止我的主线程来阅读图像。所以我想在一个单独的线程中执行提取图像 我想从一个又一个pdf中读取图像,而不是一次将所有pdf加载到内存中(由于内存问题)。所以我只想要两条线;一个应该是主线程(从pdf中读取一些文本并执行其他操作),另一个应该是提