西蒙购物网(中)

  • 功能:类别数据访问接口实现类
  • 作者:华卫
  • 日期:2016年12月10日
    */
    package net.lhp.shop.dao.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;

import net.lhp.shop.bean.Category;
import net.lhp.shop.dao.CategoryDao;
import net.lhp.shop.dbutil.ConnectionManager;

public class CategoryDaoImpl implements CategoryDao {
/**
* 插入类别
*/
@Override
public int insert(Category category) {
// 定义插入记录数
int count = 0;

    // 获得数据库连接
    Connection conn = ConnectionManager.getConnection();
    // 定义SQL字符串
    String strSQL = "INSERT INTO t_category (name) VALUES (?)";
    try {
        // 创建预备语句对象
        PreparedStatement pstmt = conn.prepareStatement(strSQL);
        // 设置占位符的值
        pstmt.setString(1, category.getName());
        // 执行更新操作,插入新录
        count = pstmt.executeUpdate();
        // 关闭预备语句对象
        pstmt.close();
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        ConnectionManager.closeConnection(conn);
    }

    // 返回插入记录数
    return count;
}

/**
 * 删除类别
 */
@Override
public int deleteById(int id) {
    // 定义删除记录数
    int count = 0;

    // 获得数据库连接
    Connection conn = ConnectionManager.getConnection();
    // 定义SQL字符串
    String strSQL = "DELETE FROM t_category WHERE id = ?";
    try {
        // 创建预备语句对象
        PreparedStatement pstmt = conn.prepareStatement(strSQL);
        // 设置占位符的值
        pstmt.setInt(1, id);
        // 执行更新操作,删除记录
        count = pstmt.executeUpdate();
        // 关闭预备语句对象
        pstmt.close();
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        ConnectionManager.closeConnection(conn);
    }

    // 返回删除记录数
    return count;
}

/**
 * 更新类别
 */
@Override
public int update(Category category) {
    // 定义更新记录数
    int count = 0;

    // 获得数据库连接
    Connection conn = ConnectionManager.getConnection();
    // 定义SQL字符串
    String strSQL = "UPDATE t_category SET name = ? WHERE id = ?";
    try {
        // 创建预备语句对象
        PreparedStatement pstmt = conn.prepareStatement(strSQL);
        // 设置占位符的值
        pstmt.setString(1, category.getName());
        pstmt.setInt(2, category.getId());
        // 执行更新操作,更新记录
        count = pstmt.executeUpdate();
        // 关闭预备语句对象
        pstmt.close();
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        ConnectionManager.closeConnection(conn);
    }

    // 返回更新记录数
    return count;
}

/**
 * 按标识符查询类别
 */
@Override
public Category findById(int id) {
    // 声明商品类别
    Category category = null;

    // 获取数据库连接对象
    Connection conn = ConnectionManager.getConnection();
    // 定义SQL字符串
    String strSQL = "SELECT * FROM t_category WHERE id = ?";
    try {
        // 创建预备语句对象
        PreparedStatement pstmt = conn.prepareStatement(strSQL);
        // 设置占位符的值
        pstmt.setInt(1, id);
        // 执行SQL查询,返回结果集
        ResultSet rs = pstmt.executeQuery();
        // 判断结果集是否有记录
        if (rs.next()) {
            // 实例化商品类别
            category = new Category();
            // 利用当前记录字段值去设置商品类别的属性
            category.setId(rs.getInt("id"));
            category.setName(rs.getString("name"));
        }
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        ConnectionManager.closeConnection(conn);
    }

    // 返回商品类别
    return category;
}

/**
 * 查询全部类别
 */
@Override
public List findAll() {
    // 声明类别列表
    List categories = new ArrayList();
    // 获取数据库连接对象
    Connection conn = ConnectionManager.getConnection();
    // 定义SQL字符串
    String strSQL = "SELECT * FROM t_category";
    try {
        // 创建语句对象
        Statement stmt = conn.createStatement();
        // 执行SQL,返回结果集
        ResultSet rs = stmt.executeQuery(strSQL);
        // 遍历结果集
        while (rs.next()) {
            // 创建类别实体
            Category category = new Category();
            // 设置实体属性
            category.setId(rs.getInt("id"));
            category.setName(rs.getString("name"));
            // 将实体添加到类别列表
            categories.add(category);
        }
        // 关闭结果集
        rs.close();
        // 关闭语句对象
        stmt.close();
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        // 关闭数据库连接
        ConnectionManager.closeConnection(conn);
    }
    // 返回类别列表
    return categories;
}

}
西蒙购物网(中)_第1张图片测试成功
西蒙购物网(中)_第2张图片
package net.hw.shop.servlet;
/**

  • 功能:显示类别控制程序
  • 作者:华卫
  • 日期:2019年12月9日
    */

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import net.hw.shop.bean.Category;
import net.hw.shop.service.CategoryService;

@WebServlet("/showCategory")
public class ShowCategoryServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    // 创建类别服务对象
    CategoryService categoryService = new CategoryService();
    // 获取全部商品类别
    List categories = categoryService.findAllCategories();
    // 获取session对象
    HttpSession session = request.getSession();
    // 把商品类别列表以属性的方式保存到session里
    session.setAttribute("categories", categories);
    // 重定向到显示商品类别页面(showCategory.jsp)
    response.sendRedirect(request.getContextPath() + "/frontend/showCategory.jsp");
    // 在服务器控制台输出测试信息
    for (Category category: categories) {
        System.out.println(category);
    }        
}

protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    doGet(request, response);
}

}

西蒙购物网(中)_第3张图片
package net.hw.shop.servlet;
/**

  • 功能:显示商品列表的控制程序
  • 通过业务层访问后台数据,
    
  • 然后将数据返回给前台页面
    
  • 作者:华卫
  • 日期:2019年12月9日
    */

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import net.hw.shop.bean.Product;
import net.hw.shop.service.CategoryService;
import net.hw.shop.service.ProductService;

@WebServlet("/showProduct")
public class ShowProductServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    // 获取类别标识符
    int categoryId = Integer.parseInt(request.getParameter("categoryId"));
    // 创建商品类别服务对象
    CategoryService categoryService = new CategoryService();
    // 由类别标识符获取类别名
    String categoryName = categoryService.findCategoryById(categoryId).getName();
    // 创建商品服务对象
    ProductService productService = new ProductService();
    // 获取指定商品类别的商品列表
    List products = productService.findProductsByCategoryId(categoryId);
    // 获取session对象
    HttpSession session = request.getSession();
    // 把商品列表对象以属性的方式保存到session里
    session.setAttribute("products", products);
    // 重定向到显示商品信息页面
    response.sendRedirect(request.getContextPath() + "/frontend/showProduct.jsp?categoryName=" + categoryName);
    // 在服务器端控制台输出测试信息
    for (int i = 0; i < products.size(); i++) {
        System.out.println(products.get(i));
    }
}

protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    doGet(request, response);
}

}
西蒙购物网(中)_第4张图片
package net.hw.shop.servlet;
/**

  • 功能:显示购物车控制程序
  • 作者:华卫
  • 日期:2019年12月14日
    */

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import net.hw.shop.bean.Product;
import net.hw.shop.service.ProductService;

@WebServlet("/showCart")
public class ShowCartServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    // 获取商品类别标识符
    int categoryId = Integer.parseInt(request.getParameter("categoryId"));
    // 获取session对象
    HttpSession session = request.getSession();
    // 获取购物车
    LinkedHashMap cart = (LinkedHashMap) session.getAttribute("cart");

    // 判断购物车是否为空
    if (cart != null) {
        // 定义购物表
        List> shoppingTable = new ArrayList>();
        // 创建商品服务对象
        ProductService productService = new ProductService();
        // 购物总金额
        double totalPrice = 0.0;
        // 遍历购物车
        for (Integer id : cart.keySet()) {
            // 获取商品对象
            Product product = productService.findProductById(id);
            // 生成购物表记录
            HashMap shoppingItem = new HashMap();
            shoppingItem.put("id", product.getId());
            shoppingItem.put("name", product.getName());
            shoppingItem.put("price", product.getPrice());
            shoppingItem.put("amount", cart.get(id));
            shoppingItem.put("sum", product.getPrice() * cart.get(id));
            // 将购物表记录添加到购物表中
            shoppingTable.add(shoppingItem);
            // 累加购买总金额
            totalPrice = totalPrice + (Double) shoppingItem.get("sum");
        }

        // 将购物表和购买总金额保存到session里
        session.setAttribute("shoppingTable", shoppingTable);
        session.setAttribute("totalPrice", totalPrice);

        // 重定向到显示商品控制程序
        response.sendRedirect(request.getContextPath() + "/showProduct?categoryId=" + categoryId);
    } else {
        System.out.println("购物车里没有类别号为[" + categoryId + "]的商品!");
    }
}

protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    doGet(request, response);
}

}
西蒙购物网(中)_第5张图片
package net.hw.shop.servlet;
/**

  • 功能:操作购物车控制程序
  • 作者:华卫
  • 日期:2019年12月14日
    */

import java.io.IOException;
import java.util.LinkedHashMap;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.hw.shop.service.ProductService;

@WebServlet("/operateCart")
public class OperateCartServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    // 获取商品标识符
    int id = Integer.parseInt(request.getParameter("id"));
    // 获取商品操作
    String operation = request.getParameter("operation");

    // 从session里获取购物车(键:商品标识符;值:购买数量)
    LinkedHashMap cart = (LinkedHashMap) request.getSession()
            .getAttribute("cart");
    // 判断购物车是否为空
    if (cart == null) {
        // 创建购物车
        cart = new LinkedHashMap();
        // 将购物车保存到session里,便于用户在不同页面访问购物车
        request.getSession().setAttribute("cart", cart);
    }

    if (operation.equals("add")) {
        // 将商品添加到购物车
        if (cart.containsKey(id)) { // 该商品已购买过
            // 购买数量增加1
            cart.put(id, cart.get(id) + 1);
        } else { // 该商品未曾购买
            // 购买数量设置为1
            cart.put(id, 1);
        }
    } else if (operation.equals("delete")){
        // 将商品从购物车删除
        if (cart.get(id) > 1) {
            // 购买数量减少1
            cart.put(id, cart.get(id) - 1);
        } else {
            // 从购物车里删除该商品
            cart.remove(id);
        }
    }

    // 创建商品服务对象
    ProductService productService = new ProductService();
    // 获取该商品类别标识符
    int categoryId = productService.findProductById(id).getCategoryId();
    // 重定向到显示购物车控制程序
    response.sendRedirect(request.getContextPath() + "/showCart?categoryId=" + categoryId);
}

}
生成订单处理类(MakeOrderServlet)

package net.hw.shop.servlet;
/**

  • 功能:生成订单控制程序
  • 作者:华卫
  • 日期:2019年12月14日
    */

import java.io.IOException;
import java.sql.Timestamp;
import java.util.Date;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import net.hw.shop.bean.Order;
import net.hw.shop.bean.User;
import net.hw.shop.service.OrderService;
import net.hw.shop.service.UserService;
import net.hw.shop.service.OrderService;
import net.hw.shop.service.UserService;

@WebServlet("/makeOrder")
public class MakeOrderServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    // 设置请求对象的字符编码
    request.setCharacterEncoding("utf-8");
    // 获取表单提交数据
    String username = request.getParameter("username");
    String telephone = request.getParameter("telephone");
    Double totalPrice = Double.parseDouble(request.getParameter("totalPrice"));
    String deliveryAddress = request.getParameter("deliveryAddress");
    // 创建订单对象
    Order order = new Order();
    // 设置订单属性
    order.setUsername(username);
    order.setTotalPrice(totalPrice);
    order.setTelephone(telephone);
    order.setDeliveryAddress(deliveryAddress);
    order.setOrderTime(new Date());
    // 创建订单服务
    OrderService orderService = new OrderService();
    // 添加订单
    orderService.addOrder(order);
    // 获取最后一个订单
    Order lastOrder = orderService.findLastOrder();
    // 保存到session里
    request.getSession().setAttribute("lastOrder", lastOrder);
    // 重定向到显示订单页面
    response.sendRedirect(request.getContextPath() + "/frontend/showOrder.jsp");
}

protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    doGet(request, response);
}

}

支付处理类(PayServlet)
package net.hw.shop.servlet;
/**

  • 功能:支付处理程序
  • 作者:华卫
  • 日期:2019年12月14日
    */

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/pay")
public class PayServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    // 设置请求对象的字符编码
    request.setCharacterEncoding("utf-8");
    ///////////////////////
    // 待做部分
    // 设置session失效
    request.getSession().invalidate();
    // 重定向到登录页面
    response.sendRedirect(request.getContextPath() + "/login.jsp");
}

protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    doGet(request, response);
}

}
显示用户处理类(ShowUserServlet)
package net.hw.shop.servlet;
/**

  • 功能:显示用户控制程序
  • 作者:华卫
  • 日期:2019年12月14日
    */

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import net.hw.shop.bean.User;
import net.hw.shop.service.UserService;

@WebServlet("/showUser")
public class ShowUserServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    // 创建用户服务对象
    UserService userService = new UserService();
    // 获取全部用户
    List users = userService.findAllUsers();
    // 获取session对象
    HttpSession session = request.getSession();
    // 把用户列表以属性的方式保存到session里
    session.setAttribute("users", users);
    // 重定向到显示用户页面(showUser.jsp)
    response.sendRedirect(request.getContextPath() + "/backend/showUser.jsp");
    // 在控制台输出所有用户信息
    for (User user: users) {
        System.out.println(user);
    }
}

protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    doGet(request, response);
}

}
输出信息
西蒙购物网(中)_第6张图片

你可能感兴趣的:(西蒙购物网(中))