使用主键在jsp中显示来自mysql数据库的所有数据

问题描述:

我正在创建一个电子商务项目作为我学习的一部分。我想在同一个JSP页面上显示一个类别中的所有产品。例如,如果用户点击“笔记本”类别,则必须显示该类别中可用的所有产品。所有类别的所有产品都放在一张大桌子上。使用主键在jsp中显示来自mysql数据库的所有数据

我的数据库方案是:

create table products(product_id varchar(20), 
product_name varchar(20), 
product_prize varchar(20), 
product_category varchar(20), 
primary key(product_id)); 

我的主键是product_id。但是,我目前的实现需要单独的JSP页面为每个人product_id。当我有很多产品时,这是不切实际的。

类别页面的一个例子,lapcategory.jsp

<% int sec1=1; 
    int sec2=2; 
    int sec3=3; 
    int sec4=4; 
    int sec5=5; 
    int sec6=6; 
%> 

<td> 
    <center> 
    <%if (sec1 ==1){ %> 
    <jsp:include page="includesPage/_sec1.jsp"></jsp:include> 
    <% } %> 
    </center> 
</td> 

<td> 
    <center> 
    <%if (sec2 ==2){ %> 
    <jsp:include page="includesPage/_sec2.jsp"></jsp:include> 
    <% } %> 
    </center> 
</td> 

此链接到各个栏目页面。然后,我也有章节页面,_sec1.jsp,_sec2.jsp等,我在那里使用product_id获取数据。例如,_sec1.jsp

String idn="20"; 

DB_Conn con = new DB_Conn(); 
Connection c = con.getConnection(); 
Statement statement = c.createStatement() ; 
ResultSet resultset = statement.executeQuery("select product_id,product_name,product_desc,product_prize from product where product_id="+idn); 

while(resultset.next()){ 

    String product_id = resultset.getString(1); 
    String product_name = resultset.getString(2); 
    String product_desc = resultset.getString(3); 
    String product_prize = resultset.getString(4); 
    %> 

    <div id="se1"> 
    <a href="product.jsp?id=<%=product_id%>"><% out.println(product_name); %></a><br> 
    <a href="#">Rs.<% out.println(product_prize); %></a> 

<% 
} %> 

</div> 

基本上,我要创建为每个产品ID,这显然不是一件容易的事处理个别的内页。我的问题是,做这件事的正确方法是什么?使用ArrayList的东西,也许?

我理解你的问题,但我会建议,而不是写在jsp中的数据库查询相关的代码创建一个DAO,查询数据库,然后在一个数据对象中设置结果,数据对象将包含所有您需要的属性在JSP中显示。在从数据库读取数据对象的同时设置这个数据对象中的值,然后将该数据对象放在一个数组列表中,并将该数组列表填充到Jsp中。通过这种方式,您可以在一个jsp的帮助下显示所有产品,并且不需要创建单独的jsp。