从开发者的角度来看,购买行为 就是创建一条一条的订单项
而显示购物车,也就是把这些订单项显示在页面上。
在这个阶段,订单项都会保存在session中,直到最后生成订单的时候,才会把这些订单项保存在数据库中。
步骤1:SQL
步骤2:OrderItem
步骤3:ProductDAO
步骤4:购买商品
步骤5:显示购物车内容
步骤6:购买相同商品
步骤7:配置web.xml
步骤8:测试
步骤9:练习-删除订单项
步骤10:答案-删除订单项
步骤11:练习-加入购物车
步骤12:答案-加入购物车
步骤 1 : SQL
暂时不需要为OrderItem创建表,因为在这个环节OrderItem还是保存在Session中的
步骤 2 : OrderItem
OrderItem使用属性Product类型的product,而非int类型的pid,因为在后续显示购物车的时候,可以很简单的通过el表达式就显示商品名称和价格了
package bean; public class OrderItem {
private int id; private Product product; private int num; public int getId() {
return id; } public void setId( int id) {
this .id = id; } public Product getProduct() {
return product; } public void setProduct(Product product) {
this .product = product; } public int getNum() {
return num; } public void setNum( int num) {
this .num = num; } } |
步骤 3 : ProductDAO
因为购买的时候,提交到服务器的是pid, 而OrderItem类的product属性是一个Product类型
所以ProductDAO需要根据id获取Product对象
package dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import bean.Product; public class ProductDAO {
public static void main(String[] args) {
System.out.println( new ProductDAO().getProduct( 1 ).getName()); } public Product getProduct( int id) {
Product result = null ; try {
Class.forName( "com.mysql.jdbc.Driver" ); Connection c = DriverManager.getConnection( "jdbc:mysql://127.0.0.1:3306/cart?characterEncoding=UTF-8" , "root" , "admin" ); String sql = "select * from product where id = ?" ;
|