我正在创建一个电子商务项目作为我学习的一部分。我想在同一JSP页面上显示类别中的所有产品。例如,如果用户单击“笔记本电脑”类别,则必须显示该类别中的所有可用产品。所有类别的所有产品都在一个大表中。
我的数据库方案是:
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
。但是,我当前的实现需要为每个product_id
单独的JSP页面。当我有很多产品时,这是不切实际的。
类别页面的示例 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
的东西,可能吗?
答案 0 :(得分:0)
我理解你的问题,但我建议不要在jsp中编写数据库查询相关代码创建一个DAO,查询db然后在一个数据对象中设置结果,数据对象将包含你需要显示的所有属性在JSP中。在从db读取数据对象时设置此Data对象中的值,然后将该dataObject放在一个arrayList中并在Jsp中填充该arrayList。通过这种方式,您可以在一个jsp的帮助下显示所有产品,而无需创建单独的jsp。