我正在尝试使用jsp和servlet开发类似在线购物车。我有两个表,如下所示,
tbl_Electronics :
P_Id | P_Name | Price
E01 Watch 250
E02 Mobile 250
tbl_Personal :
P_Id | P_Name | Price
P01 Shop 25
P02 Oil 15
我有如下的主页,
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Home Page</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
</head>
<body>
<h1>Catergories</h1>
<input type="button" id="Electronics" value="Electronics"> <br><br>
<input type="button" id="Personal" value="Personal Care"> <br>
<table border="1">
<thead>
<tr>
<th>Product_Id</th>
<th>Product_Name</th>
<th>Product_Price</th>
<th>Order now?</th>
</tr>
</thead>
<tbody>
<tr>
<!-- // this is sample code that how want to display -->
<c:forEach var="P" items="${TablValuesBasedOnButton}">
<tr><c:out value="${P.P_Id }" /><tr>
<tr><c:out value="${P.P_Name }" /><tr>
<tr><c:out value="${P.Price }" /><tr>
<tr><input type="checkbox" value="${P.P_Id }" class="checkboxclass"></tr>
</c:forEach>
</tr>
</tbody>
</table>
<script type="text/javascript">
$("#Electronics").click(function(){
alert("This is Electronics Button");
})
$("#Personal").click(function(){
alert("This is Personal care Button");
})
</script>
</body>
</html>
当用户点击代表表数据的按钮时,应该在表格中显示。示例 - 如果用户单击电子按钮,则所有tbl_Electronics表值显示在视图表中。我能够做到两个不同的页面,但我不知道单页显示不同的表值。
请建议我如何操作,示例代码将对我有所帮助。
答案 0 :(得分:1)
好的,首先,由于您的表具有相同的列,因此您必须具有接口
public Interface IProduct {
getProductId();
getProductName();
getProductPrice();
}
现在,您必须拥有实现此接口的表(bean)的视图(处理字段名称);
public Class Electronics implements IProduct, java.io.Serializable {
private Long productId;
private String productName;
private Double productPrice;
//Getters must implement the interface methods
}
//类Personal
的逻辑相同
现在,在您的jsp中,您必须处理单击按钮操作,如下所示(将按钮放在表单中):
$("#Electronics").click(function(){
document.myform.method = "post";
document.myform.action ="GetElectronicsValuesServlet";
document.myForm.submit();
});
在servelet中,在doPost()方法中,你使用接口引用来执行逻辑,如下所示:
List<IProduct> electronics = //db method call
request.setAttribute("products", electronics);
RequestDispatcher rd = request.getRequestDispatcher("/index.jsp");
rd.forward(request, response);
//第二个servlet中的逻辑相同,但填充了列表界面 引用人物对象,并将列表放在同一个键上 &#34;产品&#34;
现在,在页面中,使用接口引用来获取值:
//Retrieve the list of products from request and iterate over it, do it with //jstl, for presentation i'm using scriplets
<%for (IProduct product : products) {%>
<tr><%=product.getProductId()%></tr>
<tr><%=product.getProductName()%></tr>
<tr><%=product.getProductPrice()%></tr>
<%}%>
类似的东西可以帮助您解决问题。希望它有所帮助。