From 48346a59b6dc20c2542b54f0b95d2fa9016c62a5 Mon Sep 17 00:00:00 2001 From: xhy <2015260019@qq.com> Date: Mon, 16 Dec 2024 11:22:55 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- META-INF/MANIFEST.MF | 3 - action/buy_servlet.java | 164 ++++++++++++ action/catelog_servlet.java | 126 +++++++++ action/goods_servlet.java | 312 ++++++++++++++++++++++ action/index_servlet.java | 76 ++++++ action/liuyan_servlet.java | 299 +++++++++++++++++++++ action/order_servlet.java | 194 ++++++++++++++ action/user_servlet.java | 234 ++++++++++++++++ action/xinyong_servlet.java | 160 +++++++++++ dao/DB.java | 124 +++++++++ js/popup.js | 188 ------------- js/popup_shuaxin.js | 188 ------------- js/popup_shuaxin_no.js | 188 ------------- js/public.js | 474 --------------------------------- orm/TAdmin.java | 38 +++ orm/TLiuyan.java | 146 ++++++++++ orm/Tcatelog.java | 34 +++ orm/Tgoods.java | 104 ++++++++ orm/Torder.java | 186 +++++++++++++ orm/TorderItem.java | 107 ++++++++ orm/Tuser.java | 106 ++++++++ orm/Txinyong.java | 105 ++++++++ service/cartService.java | 88 ++++++ service/liuService.java | 344 ++++++++++++++++++++++++ service/loginService.java | 166 ++++++++++++ site/cart/mycart.jsp | 157 ----------- site/default.jsp | 23 -- site/goods/goodsByCatelog.jsp | 93 ------- site/goods/goodsDetailQian.jsp | 110 -------- site/goods/goodsNew.jsp | 93 ------- site/goods/goodsRes.jsp | 92 ------- site/goods/goodsSea.jsp | 90 ------- site/inc/daohang.jsp | 81 ------ site/inc/left.jsp | 47 ---- site/index.jsp | 72 ----- site/liuyan/liuyanAdd.jsp | 60 ----- site/liuyan/liuyanAll.jsp | 108 -------- site/liuyan/liuyanDetail.jsp | 66 ----- site/order/myorder.jsp | 113 -------- site/order/orderDetail.jsp | 180 ------------- site/order/orderQueren.jsp | 123 --------- site/order/orderSubmit.jsp | 94 ------- site/userlogin/userlogin.jsp | 84 ------ site/userreg/userreg.jsp | 122 --------- updown/updown.jsp | 49 ---- util/Cart.java | 95 +++++++ util/EncodingFilter.java | 78 ++++++ 47 files changed, 3286 insertions(+), 2898 deletions(-) delete mode 100644 META-INF/MANIFEST.MF create mode 100644 action/buy_servlet.java create mode 100644 action/catelog_servlet.java create mode 100644 action/goods_servlet.java create mode 100644 action/index_servlet.java create mode 100644 action/liuyan_servlet.java create mode 100644 action/order_servlet.java create mode 100644 action/user_servlet.java create mode 100644 action/xinyong_servlet.java create mode 100644 dao/DB.java delete mode 100644 js/popup.js delete mode 100644 js/popup_shuaxin.js delete mode 100644 js/popup_shuaxin_no.js delete mode 100644 js/public.js create mode 100644 orm/TAdmin.java create mode 100644 orm/TLiuyan.java create mode 100644 orm/Tcatelog.java create mode 100644 orm/Tgoods.java create mode 100644 orm/Torder.java create mode 100644 orm/TorderItem.java create mode 100644 orm/Tuser.java create mode 100644 orm/Txinyong.java create mode 100644 service/cartService.java create mode 100644 service/liuService.java create mode 100644 service/loginService.java delete mode 100644 site/cart/mycart.jsp delete mode 100644 site/default.jsp delete mode 100644 site/goods/goodsByCatelog.jsp delete mode 100644 site/goods/goodsDetailQian.jsp delete mode 100644 site/goods/goodsNew.jsp delete mode 100644 site/goods/goodsRes.jsp delete mode 100644 site/goods/goodsSea.jsp delete mode 100644 site/inc/daohang.jsp delete mode 100644 site/inc/left.jsp delete mode 100644 site/index.jsp delete mode 100644 site/liuyan/liuyanAdd.jsp delete mode 100644 site/liuyan/liuyanAll.jsp delete mode 100644 site/liuyan/liuyanDetail.jsp delete mode 100644 site/order/myorder.jsp delete mode 100644 site/order/orderDetail.jsp delete mode 100644 site/order/orderQueren.jsp delete mode 100644 site/order/orderSubmit.jsp delete mode 100644 site/userlogin/userlogin.jsp delete mode 100644 site/userreg/userreg.jsp delete mode 100644 updown/updown.jsp create mode 100644 util/Cart.java create mode 100644 util/EncodingFilter.java diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF deleted file mode 100644 index 254272e..0000000 --- a/META-INF/MANIFEST.MF +++ /dev/null @@ -1,3 +0,0 @@ -Manifest-Version: 1.0 -Class-Path: - diff --git a/action/buy_servlet.java b/action/buy_servlet.java new file mode 100644 index 0000000..3e2def7 --- /dev/null +++ b/action/buy_servlet.java @@ -0,0 +1,164 @@ +package com.itbaizhan.action; + +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Iterator; + +import javax.servlet.RequestDispatcher; +import javax.servlet.ServletConfig; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import com.itbaizhan.orm.Tgoods; +import com.itbaizhan.orm.Torder; +import com.itbaizhan.orm.TorderItem; +import com.itbaizhan.orm.Tuser; +import com.itbaizhan.service.liuService; +import com.itbaizhan.util.Cart; + +// 继承自HttpServlet类,这是一个典型的Servlet类,用于处理客户端请求 +public class buy_servlet extends HttpServlet { + + // service方法处理所有客户端请求 + // req: HttpServletRequest请求对象,res: HttpServletResponse响应对象 + public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { + String type = req.getParameter("type"); // 获取URL传来的type参数,决定执行的操作 + + // 判断type的值,调用不同的操作方法 + if (type.endsWith("addToCart")) { + addToCart(req, res); // 如果操作是添加到购物车 + } + if (type.endsWith("orderSubmit")) { + orderSubmit(req, res); // 如果操作是提交订单 + } + if (type.endsWith("myorder")) { + myorder(req, res); // 如果操作是查看我的订单 + } + if (type.endsWith("orderDetail")) { + orderDetail(req, res); // 如果操作是查看订单明细 + } + } + + // 添加商品到购物车 + public void addToCart(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { + String goods_id = req.getParameter("goods_id"); // 获取商品ID + int quantity = Integer.parseInt(req.getParameter("quantity")); // 获取商品数量 + + // 根据商品ID获取商品详情 + Tgoods goods = liuService.getGoods(goods_id); + + // 创建订单项对象,设置商品和商品数量 + TorderItem orderItem = new TorderItem(); + orderItem.setGoods(goods); + orderItem.setGoods_quantity(quantity); + + // 获取session中的购物车对象 + HttpSession session = req.getSession(); + Cart cart = (Cart) session.getAttribute("cart"); + + // 将商品添加到购物车 + cart.addGoods(goods_id, orderItem); + + // 更新session中的购物车 + session.setAttribute("cart", cart); + + // 设置成功信息和跳转路径 + req.setAttribute("message", "操作成功"); + req.setAttribute("path", "site/cart/mycart.jsp"); // 跳转到购物车页面 + + // 跳转到成功页面 + String targetURL = "/common/success.jsp"; + dispatch(targetURL, req, res); // 跳转到目标页面 + } + + // 提交订单 + public void orderSubmit(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { + String songhuodizhi = req.getParameter("songhuodizhi"); // 获取送货地址 + String fukuanfangshi = req.getParameter("fukuanfangshi"); // 获取付款方式 + + // 从session中获取购物车对象和当前用户信息 + HttpSession session = req.getSession(); + Cart cart = (Cart) session.getAttribute("cart"); + Tuser user = (Tuser) session.getAttribute("user"); + + // 创建订单对象并设置相关属性 + Torder order = new Torder(); + order.setId(String.valueOf(new Date().getTime())); // 设置订单ID(使用当前时间戳) + order.setBianhao(new SimpleDateFormat("yyyyMMddhhmmss").format(new Date())); // 设置订单编号 + order.setShijian(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date())); // 设置下单时间 + order.setZhuangtai("no"); // 订单状态,默认是“未支付” + order.setHuifu(""); // 订单回复信息 + order.setSonghuodizhi(songhuodizhi); // 送货地址 + order.setFukuanfangshi(fukuanfangshi); // 付款方式 + order.setJine(cart.getTotalPrice()); // 总金额 + order.setUser_id(user.getId()); // 用户ID + + // 保存订单到数据库 + liuService.saveOrder(order); + + // 遍历购物车中的商品项,保存订单项信息 + for (Iterator it = cart.getItems().values().iterator(); it.hasNext();) { + TorderItem orderItem = (TorderItem) it.next(); // 获取购物车中的每一项商品 + String id = String.valueOf(new Date().getTime()); // 创建一个新的订单项ID + String order_id = order.getId(); // 获取订单ID + String goods_id = orderItem.getGoods().getId(); // 获取商品ID + int goods_quantity = orderItem.getGoods_quantity(); // 获取商品数量 + + // 保存订单项信息 + liuService.saveOrderItem(id, order_id, goods_id, goods_quantity); + } + + // 清空购物车 + cart.getItems().clear(); + session.setAttribute("cart", cart); + + // 将订单信息传递到页面 + req.setAttribute("order", order); + req.getRequestDispatcher("site/order/orderSubmit.jsp").forward(req, res); // 跳转到订单提交页面 + } + + // 查看我的订单 + public void myorder(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { + HttpSession session = req.getSession(); + Tuser user = (Tuser) session.getAttribute("user"); + + // 从数据库获取当前用户的所有订单 + req.setAttribute("orderList", liuService.orderList(user.getId())); + req.getRequestDispatcher("site/order/myorder.jsp").forward(req, res); // 跳转到我的订单页面 + } + + // 查看订单明细 + public void orderDetail(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { + String order_id = req.getParameter("order_id"); // 获取订单ID + + // 打印订单ID,调试用 + System.out.println(order_id + "DD"); + + // 从数据库获取订单项信息 + req.setAttribute("orderItemList", liuService.orderItemList(order_id)); + req.getRequestDispatcher("site/order/orderDetail.jsp").forward(req, res); // 跳转到订单明细页面 + } + + // 跳转到目标页面 + public void dispatch(String targetURI, HttpServletRequest request, HttpServletResponse response) { + RequestDispatcher dispatch = getServletContext().getRequestDispatcher(targetURI); + try { + dispatch.forward(request, response); // 转发请求到目标页面 + } catch (ServletException | IOException e) { + e.printStackTrace(); // 异常处理 + } + } + + // 初始化Servlet配置 + public void init(ServletConfig config) throws ServletException { + super.init(config); + } + + // 销毁Servlet,通常用来释放资源 + public void destroy() { + } +} diff --git a/action/catelog_servlet.java b/action/catelog_servlet.java new file mode 100644 index 0000000..7d85fe0 --- /dev/null +++ b/action/catelog_servlet.java @@ -0,0 +1,126 @@ +package com.itbaizhan.action; + +import java.io.IOException; +import java.sql.ResultSet; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import javax.servlet.RequestDispatcher; +import javax.servlet.ServletConfig; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.itbaizhan.dao.DB; +import com.itbaizhan.orm.Tcatelog; + +// 继承HttpServlet类,处理关于菜品类别的增删改查操作 +public class catelog_servlet extends HttpServlet { + + // service方法是Servlet的核心方法,接收请求并分发到不同的功能方法 + public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { + String type = req.getParameter("type"); // 获取请求的type参数,判断要执行的操作类型 + + // 根据type值决定执行相应的功能 + if (type.endsWith("catelogAdd")) { + catelogAdd(req, res); // 添加菜品类别 + } + if (type.endsWith("catelogMana")) { + catelogMana(req, res); // 菜品类别管理 + } + if (type.endsWith("catelogDel")) { + catelogDel(req, res); // 删除菜品类别 + } + } + + // 添加菜品类别 + public void catelogAdd(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { + // 获取请求参数,并设置类别的ID(使用当前时间戳) + String id = String.valueOf(new Date().getTime()); + String name = req.getParameter("name").trim(); // 获取类别名称并去除空格 + String del = "no"; // 设置删除标记,默认为“no”表示未删除 + + // 编写SQL插入语句,将菜品类别信息插入到数据库中 + String sql = "insert into t_catelog(id,name,del) values(?,?,?)"; + Object[] params = { id, name, del }; // 参数化SQL查询,防止SQL注入 + + // 创建DB对象并执行SQL语句 + DB mydb = new DB(); + mydb.doPstm(sql, params); // 执行SQL语句 + mydb.closed(); // 关闭数据库连接 + + // 设置操作成功消息 + req.setAttribute("msg", "操作成功"); + String targetURL = "/common/msg.jsp"; // 跳转页面路径 + dispatch(targetURL, req, res); // 跳转到成功提示页面 + } + + // 菜品类别管理,展示所有未删除的类别 + public void catelogMana(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { + List catelogList = new ArrayList(); // 存储所有菜品类别的列表 + + // 查询所有未删除的菜品类别 + String sql = "select * from t_catelog where del='no'"; + Object[] params = {}; // 查询没有参数 + DB mydb = new DB(); // 创建DB对象用于执行查询操作 + + try { + mydb.doPstm(sql, params); // 执行SQL查询 + ResultSet rs = mydb.getRs(); // 获取查询结果集 + + // 循环处理查询结果 + while (rs.next()) { // 如果有更多数据,继续处理 + Tcatelog catelog = new Tcatelog(); // 创建Tcatelog对象,用于存储每个类别的信息 + catelog.setId(rs.getString("id")); // 设置类别ID + catelog.setName(rs.getString("name")); // 设置类别名称 + catelogList.add(catelog); // 将类别对象添加到列表中 + } + rs.close(); // 关闭结果集 + } catch (Exception e) { + e.printStackTrace(); // 处理异常 + } + mydb.closed(); // 关闭数据库连接 + + // 将类别列表传递到前端页面 + req.setAttribute("catelogList", catelogList); + req.getRequestDispatcher("admin/catelog/catelogMana.jsp").forward(req, res); // 跳转到类别管理页面 + } + + // 删除菜品类别(将del字段设置为“yes”表示删除) + public void catelogDel(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { + // 获取请求中传递的类别ID,并执行SQL更新语句 + String sql = "update t_catelog set del='yes' where id=" + req.getParameter("id"); + Object[] params = {}; // 删除操作没有额外的参数 + DB mydb = new DB(); // 创建DB对象 + + mydb.doPstm(sql, params); // 执行更新操作 + mydb.closed(); // 关闭数据库连接 + + // 设置操作成功消息 + req.setAttribute("msg", "操作成功"); + String targetURL = "/common/msg.jsp"; // 跳转页面路径 + dispatch(targetURL, req, res); // 跳转到成功提示页面 + } + + // 跳转到指定页面 + public void dispatch(String targetURI, HttpServletRequest request, HttpServletResponse response) { + RequestDispatcher dispatch = getServletContext().getRequestDispatcher(targetURI); // 获取RequestDispatcher对象 + try { + dispatch.forward(request, response); // 将请求转发到目标页面 + } catch (ServletException | IOException e) { + e.printStackTrace(); // 处理异常 + } + } + + // 初始化Servlet配置 + public void init(ServletConfig config) throws ServletException { + super.init(config); // 调用父类的初始化方法 + } + + // 销毁Servlet,通常用来释放资源 + public void destroy() { + // 可以进行资源释放的操作(此处为空) + } +} diff --git a/action/goods_servlet.java b/action/goods_servlet.java new file mode 100644 index 0000000..d5f165b --- /dev/null +++ b/action/goods_servlet.java @@ -0,0 +1,312 @@ +package com.itbaizhan.action; + +import java.io.IOException; +import java.sql.ResultSet; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import javax.servlet.RequestDispatcher; +import javax.servlet.ServletConfig; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.itbaizhan.dao.DB; +import com.itbaizhan.orm.Tgoods; +import com.itbaizhan.service.liuService; + +public class goods_servlet extends HttpServlet { + // 处理所有的请求,根据type来区分不同的操作 + public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { + String type = req.getParameter("type"); + + // 判断type并调用相应的方法进行处理 + if (type.endsWith("goodsAdd")) { + goodsAdd(req, res); // 添加商品 + } + if (type.endsWith("goodsMana")) { + goodsMana(req, res); // 商品管理 + } + if (type.endsWith("goodsDel")) { + goodsDel(req, res); // 删除商品 + } + if (type.endsWith("goodsDetailHou")) { + goodsDetailHou(req, res); // 后台查看商品详细信息 + } + if (type.endsWith("goodsPre")) { + goodsPre(req, res); // 商品信息添加前的准备工作 + } + if (type.endsWith("goodsEdit")) { + goodsEdit(req, res); // 编辑商品信息 + } + if (type.endsWith("goodsNew")) { + goodsNew(req, res); // 获取最新商品 + } + if (type.endsWith("goodsByCatelog")) { + goodsByCatelog(req, res); // 按商品类别查看商品 + } + if (type.endsWith("goodsDetailQian")) { + goodsDetailQian(req, res); // 前台查看商品详细信息 + } + if (type.endsWith("goodsRes")) { + goodsRes(req, res); // 根据商品名称搜索商品 + } + } + + // 添加商品 + public void goodsAdd(HttpServletRequest req, HttpServletResponse res) { + String id = String.valueOf(new Date().getTime()); // 使用当前时间戳作为商品 ID + String catelog_id = req.getParameter("catelog_id"); + String bianhao = req.getParameter("bianhao"); + String mingcheng = req.getParameter("mingcheng"); + String jieshao = req.getParameter("jieshao"); + String fujian = req.getParameter("fujian"); + int shichangjia = Integer.parseInt(req.getParameter("shichangjia")); + int tejia = Integer.parseInt(req.getParameter("shichangjia")); // 可能是设置的特价,暂时设置为与市场价一样 + + String del = "no"; // 标记商品未删除 + + // SQL语句插入商品数据 + String sql = "insert into t_goods(id, catelog_id, bianhao, mingcheng, jieshao, fujian, shichangjia, tejia, del) values(?,?,?,?,?,?,?,?,?)"; + Object[] params = {id, catelog_id, bianhao, mingcheng, jieshao, fujian, shichangjia, tejia, del}; + + // 使用数据库操作类执行插入操作 + DB mydb = new DB(); + mydb.doPstm(sql, params); // 执行SQL插入 + mydb.closed(); // 关闭数据库连接 + + // 返回操作成功信息并跳转至指定页面 + req.setAttribute("msg", "操作成功"); + String targetURL = "/common/msg.jsp"; + dispatch(targetURL, req, res); // 转发到操作成功页面 + } + + // 商品管理,查看所有商品 + public void goodsMana(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { + List goodsList = new ArrayList(); + String sql = "select * from t_goods where del='no'"; // 查询所有未删除的商品 + Object[] params = {}; + + DB mydb = new DB(); + try { + mydb.doPstm(sql, params); // 执行查询操作 + ResultSet rs = mydb.getRs(); + while (rs.next()) { + Tgoods goods = new Tgoods(); // 创建Tgoods对象并填充数据 + goods.setId(rs.getString("id")); + goods.setCatelog_id(rs.getString("catelog_id")); + goods.setBianhao(rs.getString("bianhao")); + goods.setMingcheng(rs.getString("mingcheng")); + goods.setJieshao(rs.getString("jieshao")); + goods.setFujian(rs.getString("fujian")); + goods.setShichangjia(rs.getInt("shichangjia")); + goods.setTejia(rs.getInt("tejia")); + goods.setDel(rs.getString("del")); + goodsList.add(goods); // 将商品添加到列表中 + } + rs.close(); + } catch (Exception e) { + e.printStackTrace(); + } + mydb.closed(); // 关闭数据库连接 + + // 将商品列表传递到前端页面 + req.setAttribute("goodsList", goodsList); + req.getRequestDispatcher("admin/goods/goodsMana.jsp").forward(req, res); + } + + // 删除商品 + public void goodsDel(HttpServletRequest req, HttpServletResponse res) { + String id = req.getParameter("id"); + String sql = "update t_goods set del='yes' where id=" + id; // 更新商品的del字段为'yes'表示删除 + Object[] params = {}; + + DB mydb = new DB(); + mydb.doPstm(sql, params); // 执行删除操作 + mydb.closed(); + + req.setAttribute("msg", "操作成功"); + String targetURL = "/common/msg.jsp"; + dispatch(targetURL, req, res); // 转发到操作成功页面 + } + + // 后台查看商品详细信息 + public void goodsDetailHou(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { + String id = req.getParameter("id"); + + req.setAttribute("goods", liuService.getGoods(id)); // 从服务层获取商品详细信息 + req.getRequestDispatcher("admin/goods/goodsDetailHou.jsp").forward(req, res); + } + + // 商品信息添加前的准备工作 + public void goodsPre(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { + Tgoods goods = new Tgoods(); + String sql = "select * from t_goods where id=?"; + Object[] params = {req.getParameter("id")}; + + DB mydb = new DB(); + try { + mydb.doPstm(sql, params); // 执行查询操作 + ResultSet rs = mydb.getRs(); + while (rs.next()) { + goods.setId(rs.getString("id")); + goods.setCatelog_id(rs.getString("catelog_id")); + goods.setBianhao(rs.getString("bianhao")); + goods.setMingcheng(rs.getString("mingcheng")); + goods.setJieshao(rs.getString("jieshao")); + goods.setFujian(rs.getString("fujian")); + goods.setShichangjia(rs.getInt("shichangjia")); + goods.setTejia(rs.getInt("tejia")); + goods.setDel(rs.getString("del")); + } + rs.close(); + } catch (Exception e) { + e.printStackTrace(); + } + mydb.closed(); + + req.setAttribute("goods", goods); // 将商品信息传递到前端页面 + req.getRequestDispatcher("admin/goods/goodsPre.jsp").forward(req, res); + } + + // 编辑商品信息 + public void goodsEdit(HttpServletRequest req, HttpServletResponse res) { + String id = req.getParameter("id"); + String catelog_id = req.getParameter("catelog_id"); + String bianhao = req.getParameter("bianhao"); + String mingcheng = req.getParameter("mingcheng"); + String jieshao = req.getParameter("jieshao"); + String fujian = req.getParameter("fujian"); + int shichangjia = Integer.parseInt(req.getParameter("shichangjia")); + int tejia = Integer.parseInt(req.getParameter("shichangjia")); + + // 更新商品信息 + String sql = "update t_goods set catelog_id=?, bianhao=?, mingcheng=?, jieshao=?, fujian=?, shichangjia=?, tejia=? where id=?"; + Object[] params = {catelog_id, bianhao, mingcheng, jieshao, fujian, shichangjia, tejia, id}; + + DB mydb = new DB(); + mydb.doPstm(sql, params); // 执行更新操作 + mydb.closed(); + + req.setAttribute("msg", "操作成功"); + String targetURL = "/common/msg.jsp"; + dispatch(targetURL, req, res); // 转发到操作成功页面 + } + + // 获取最新商品 + public void goodsNew(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { + List goodsList = new ArrayList(); + String sql = "select * from t_goods where del='no' order by id desc"; // 按商品ID降序排列,查询所有未删除的商品 + Object[] params = {}; + + DB mydb = new DB(); + try { + mydb.doPstm(sql, params); // 执行查询操作 + ResultSet rs = mydb.getRs(); + while (rs.next()) { + Tgoods goods = new Tgoods(); // 创建Tgoods对象并填充数据 + goods.setId(rs.getString("id")); + goods.setCatelog_id(rs.getString("catelog_id")); + goods.setBianhao(rs.getString("bianhao")); + goods.setMingcheng(rs.getString("mingcheng")); + goods.setJieshao(rs.getString("jieshao")); + goods.setFujian(rs.getString("fujian")); + goods.setShichangjia(rs.getInt("shichangjia")); + goods.setTejia(rs.getInt("tejia")); + goods.setDel(rs.getString("del")); + goodsList.add(goods); // 将商品添加到列表中 + } + rs.close(); + } catch (Exception e) { + e.printStackTrace(); + } + mydb.closed(); // 关闭数据库连接 + + // 限制最新商品显示数量最多为4个 + if (goodsList.size() > 4) { + goodsList = goodsList.subList(0, 4); // 截取前4个商品 + } + + // 将商品列表传递到前端页面 + req.setAttribute("goodsList", goodsList); + req.getRequestDispatcher("site/goods/goodsNew.jsp").forward(req, res); // 转发到前端页面显示最新商品 + } + + // 根据商品类别查看商品 + public void goodsByCatelog(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { + String catelog_id = req.getParameter("catelog_id"); + + // 从服务层获取指定类别的商品列表 + req.setAttribute("goodsList", liuService.goodsByCatelog(catelog_id)); + req.getRequestDispatcher("site/goods/goodsByCatelog.jsp").forward(req, res); // 转发到前端页面显示商品类别 + } + + // 前台查看商品详细信息 + public void goodsDetailQian(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { + String id = req.getParameter("id"); + + // 从服务层获取商品的详细信息 + req.setAttribute("goods", liuService.getGoods(id)); + req.getRequestDispatcher("site/goods/goodsDetailQian.jsp").forward(req, res); // 转发到前端页面显示商品详细信息 + } + + // 根据商品名称搜索商品 + public void goodsRes(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { + String mingcheng = req.getParameter("mingcheng"); + + List goodsList = new ArrayList(); + String sql = "select * from t_goods where del='no' and mingcheng like '%" + mingcheng.trim() + "%'"; // 根据商品名称进行模糊查询 + Object[] params = {}; + + DB mydb = new DB(); + try { + mydb.doPstm(sql, params); // 执行查询操作 + ResultSet rs = mydb.getRs(); + while (rs.next()) { + Tgoods goods = new Tgoods(); // 创建Tgoods对象并填充数据 + goods.setId(rs.getString("id")); + goods.setCatelog_id(rs.getString("catelog_id")); + goods.setBianhao(rs.getString("bianhao")); + goods.setMingcheng(rs.getString("mingcheng")); + goods.setJieshao(rs.getString("jieshao")); + goods.setFujian(rs.getString("fujian")); + goods.setShichangjia(rs.getInt("shichangjia")); + goods.setTejia(rs.getInt("tejia")); + goods.setDel(rs.getString("del")); + goodsList.add(goods); // 将商品添加到列表中 + } + rs.close(); + } catch (Exception e) { + e.printStackTrace(); + } + mydb.closed(); // 关闭数据库连接 + + // 将商品列表传递到前端页面 + req.setAttribute("goodsList", goodsList); + req.getRequestDispatcher("site/goods/goodsRes.jsp").forward(req, res); // 转发到前端页面显示搜索结果 + } + + // 转发请求到指定页面 + public void dispatch(String targetURI, HttpServletRequest request, HttpServletResponse response) { + RequestDispatcher dispatch = getServletContext().getRequestDispatcher(targetURI); + try { + dispatch.forward(request, response); // 转发请求到目标页面 + } catch (ServletException e) { + e.printStackTrace(); // 捕获并打印异常 + } catch (IOException e) { + e.printStackTrace(); // 捕获并打印异常 + } + } + + // 初始化方法,初始化Servlet时调用 + public void init(ServletConfig config) throws ServletException { + super.init(config); // 调用父类的init()方法进行初始化 + } + + // 销毁方法,在Servlet销毁时调用 + public void destroy() { + // 在Servlet销毁时执行清理工作,如果有的话 + } +} diff --git a/action/index_servlet.java b/action/index_servlet.java new file mode 100644 index 0000000..1daeb81 --- /dev/null +++ b/action/index_servlet.java @@ -0,0 +1,76 @@ +package com.itbaizhan.action; + +import java.io.IOException; +import javax.servlet.RequestDispatcher; +import javax.servlet.ServletConfig; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.itbaizhan.service.liuService; + +public class index_servlet extends HttpServlet +// 导航页面服务端小程序 +{ + /** + * service方法是处理请求的核心方法 + * 这个方法会接收客户端的请求,并做出响应。 + * 1. 从服务层获取商品分类数据 + * 2. 将数据保存到session中,以便前端页面使用 + * 3. 转发请求到首页(index.jsp) + */ + public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException + { + // 从liuService类中获取商品分类数据,并将其保存到session中 + req.getSession().setAttribute("catelogList", liuService.catelogList()); + + // 转发请求到首页index.jsp页面,这个页面会使用“catelogList”来展示商品分类 + req.getRequestDispatcher("site/index.jsp").forward(req, res); + } + + /** + * dispatch方法用于请求的转发 + * 用于将请求转发到指定的目标URI。 + * 这里传入的目标URI通常是JSP页面,用于显示数据。 + */ + public void dispatch(String targetURI, HttpServletRequest request, HttpServletResponse response) + { + RequestDispatcher dispatch = getServletContext().getRequestDispatcher(targetURI); // 获取请求转发器 + + try + { + // 转发请求到目标页面 + dispatch.forward(request, response); + return; + } + catch (ServletException e) + { + e.printStackTrace(); // 捕获并打印ServletException + } + catch (IOException e) + { + e.printStackTrace(); // 捕获并打印IOException + } + } + + /** + * init方法用于Servlet初始化时的设置 + * 在Servlet创建时调用,用于做一些必要的初始化工作。 + * 这里调用了父类的init()方法,但没有额外的初始化逻辑。 + */ + public void init(ServletConfig config) throws ServletException + { + super.init(config); // 调用父类的init()方法进行初始化 + } + + /** + * destroy方法在Servlet销毁时调用 + * 可以用来释放资源,如关闭数据库连接、清理内存等。 + * 这里没有特别的销毁逻辑,留作将来扩展使用。 + */ + public void destroy() + { + // 销毁时执行清理工作,如果需要 + } +} diff --git a/action/liuyan_servlet.java b/action/liuyan_servlet.java new file mode 100644 index 0000000..a191a26 --- /dev/null +++ b/action/liuyan_servlet.java @@ -0,0 +1,299 @@ +package com.itbaizhan.action; + +import java.io.IOException; +import java.sql.ResultSet; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import javax.servlet.RequestDispatcher; +import javax.servlet.ServletConfig; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import com.itbaizhan.dao.DB; +import com.itbaizhan.orm.TLiuyan; +import com.itbaizhan.orm.Tuser; + +public class liuyan_servlet extends HttpServlet +{ + /** + * service方法用于处理客户端请求,区分不同的请求类型, + * 并调用相应的方法来处理留言的增、删、查、改操作。 + */ + public void service(HttpServletRequest req,HttpServletResponse res)throws ServletException, IOException + { + // 获取请求的type参数来确定操作类型 + String type = req.getParameter("type"); + + // 根据请求的操作类型,调用相应的方法 + if(type.endsWith("liuyanAdd")) + { + liuyanAdd(req, res); // 留言添加 + } + if(type.endsWith("liuyanMana")) + { + liuyanMana(req, res); // 留言管理 + } + if(type.endsWith("liuyanDel")) + { + liuyanDel(req, res); // 留言删除 + } + if(type.endsWith("liuyanHuifu")) + { + liuyanHuifu(req, res); // 留言回复 + } + if(type.endsWith("liuyanAll")) + { + liuyanAll(req, res); // 获取所有留言 + } + if(type.endsWith("liuyanDetail")) + { + liuyanDetail(req, res); // 留言详细信息 + } + } + + /** + * liuyanAdd方法用于处理添加留言的操作。 + * 获取留言内容,保存到数据库,并跳转到提示页面。 + */ + public void liuyanAdd(HttpServletRequest req,HttpServletResponse res) + { + HttpSession session = req.getSession(); + Tuser user = (Tuser)session.getAttribute("user"); // 从session中获取当前登录用户 + + // 获取留言内容 + String neirong = req.getParameter("neirong"); + String liuyanshi = new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date()); // 当前时间 + String user_id = user.getId(); // 获取用户ID + String huifu = ""; // 默认无回复 + String huifushi = ""; // 默认无回复时间 + + // 构建SQL插入语句 + String sql = "insert into t_liuyan(neirong, liuyanshi, user_id, huifu, huifushi) values(?,?,?,?,?)"; + Object[] params = {neirong, liuyanshi, user_id, huifu, huifushi}; + + DB mydb = new DB(); // 创建DB对象 + mydb.doPstm(sql, params); // 执行SQL语句 + mydb.closed(); // 关闭数据库连接 + + req.setAttribute("msg", "留言完毕"); // 设置提示信息 + String targetURL = "/common/msg.jsp"; // 定义跳转页面 + dispatch(targetURL, req, res); // 请求转发到提示页面 + } + + /** + * liuyanMana方法用于管理留言。 + * 从数据库获取所有留言,并将其显示在管理页面。 + */ + public void liuyanMana(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException + { + List liuyanList = new ArrayList(); + String sql = "select * from t_liuyan order by liuyanshi"; // 获取所有留言的SQL语句 + Object[] params = {}; + DB mydb = new DB(); // 创建DB对象 + try + { + mydb.doPstm(sql, params); // 执行SQL查询 + ResultSet rs = mydb.getRs(); // 获取结果集 + while(rs.next()) // 遍历结果集 + { + TLiuyan liuyan = new TLiuyan(); // 创建留言对象 + + liuyan.setId(rs.getInt("id")); + liuyan.setNeirong(rs.getString("neirong")); + liuyan.setLiuyanshi(rs.getString("liuyanshi")); + liuyan.setUser_id(rs.getString("user_id")); + liuyan.setHuifu(rs.getString("huifu")); + liuyan.setHuifushi(rs.getString("huifushi")); + + liuyanList.add(liuyan); // 将留言添加到列表中 + } + rs.close(); // 关闭结果集 + } + catch(Exception e) + { + e.printStackTrace(); // 打印异常 + } + mydb.closed(); // 关闭数据库连接 + + req.setAttribute("liuyanList", liuyanList); // 将留言列表设置到请求属性中 + req.getRequestDispatcher("admin/liuyan/liuyanMana.jsp").forward(req, res); // 转发到留言管理页面 + } + + /** + * liuyanDel方法用于删除指定ID的留言。 + * 从数据库删除对应留言数据,并跳转到提示页面。 + */ + public void liuyanDel(HttpServletRequest req,HttpServletResponse res) + { + String sql = "delete from t_liuyan where id=" + Integer.parseInt(req.getParameter("id")); // 删除留言的SQL语句 + Object[] params = {}; + DB mydb = new DB(); // 创建DB对象 + mydb.doPstm(sql, params); // 执行删除操作 + mydb.closed(); // 关闭数据库连接 + + req.setAttribute("msg", "留言信息删除完毕"); // 设置删除成功的提示信息 + String targetURL = "/common/msg.jsp"; // 定义跳转页面 + dispatch(targetURL, req, res); // 请求转发到提示页面 + } + + /** + * liuyanHuifu方法用于回复留言。 + * 获取回复内容,并将其更新到数据库中,同时跳转到提示页面。 + */ + public void liuyanHuifu(HttpServletRequest req,HttpServletResponse res) + { + String huifu = req.getParameter("huifu"); // 获取回复内容 + String huifushi = new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date()); // 回复时间 + int id = Integer.parseInt(req.getParameter("id")); // 获取留言ID + + // 更新留言的回复内容和时间 + String sql = "update t_liuyan set huifu=?, huifushi=? where id=?"; + Object[] params = {huifu, huifushi, id}; + DB mydb = new DB(); // 创建DB对象 + mydb.doPstm(sql, params); // 执行更新操作 + mydb.closed(); // 关闭数据库连接 + + req.setAttribute("msg", "回复完毕"); // 设置回复成功的提示信息 + String targetURL = "/common/msg.jsp"; // 定义跳转页面 + dispatch(targetURL, req, res); // 请求转发到提示页面 + } + + /** + * liuyanAll方法用于获取所有留言。 + * 从数据库获取所有留言数据并显示在前端页面。 + */ + public void liuyanAll(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException + { + List liuyanList = new ArrayList(); + String sql = "select * from t_liuyan order by liuyanshi"; // 获取所有留言的SQL语句 + Object[] params = {}; + DB mydb = new DB(); // 创建DB对象 + try + { + mydb.doPstm(sql, params); // 执行SQL查询 + ResultSet rs = mydb.getRs(); // 获取结果集 + while(rs.next()) // 遍历结果集 + { + TLiuyan liuyan = new TLiuyan(); // 创建留言对象 + + liuyan.setId(rs.getInt("id")); + liuyan.setNeirong(rs.getString("neirong")); + liuyan.setLiuyanshi(rs.getString("liuyanshi")); + liuyan.setUser_id(rs.getString("user_id")); + liuyan.setHuifu(rs.getString("huifu")); + liuyan.setHuifushi(rs.getString("huifushi")); + + liuyanList.add(liuyan); // 将留言添加到列表中 + } + rs.close(); // 关闭结果集 + } + catch(Exception e) + { + e.printStackTrace(); // 打印异常 + } + mydb.closed(); // 关闭数据库连接 + + req.setAttribute("liuyanList", liuyanList); // 将留言列表设置到请求属性中 + req.getRequestDispatcher("site/liuyan/liuyanAll.jsp").forward(req, res); // 转发到留言展示页面 + } + + /** + * liuyanDetail方法用于查看指定ID的留言详细信息。 + * 从数据库中查询特定ID的留言,并将其显示在详细信息页面。 + */ + public void liuyanDetail(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException + { + int id = Integer.parseInt(req.getParameter("id")); // 获取留言ID + + // 获取留言的详细信息 + req.setAttribute("liuyan", get_liuyan(id)); + + // 转发到留言详细页面显示内容 + req.getRequestDispatcher("site/liuyan/liuyanDetail.jsp").forward(req, res); + } + + /** + * get_liuyan方法用于根据留言ID从数据库中查询并返回该留言对象。 + * @param id 留言ID + * @return 返回查询到的留言对象 + */ + public TLiuyan get_liuyan(int id) + { + TLiuyan liuyan = new TLiuyan(); // 创建留言对象 + + // 查询特定ID的留言数据 + String sql = "select * from t_liuyan where id=?"; + Object[] params = {id}; + DB mydb = new DB(); // 创建DB对象 + try + { + mydb.doPstm(sql, params); // 执行SQL查询 + ResultSet rs = mydb.getRs(); // 获取结果集 + while(rs.next()) // 遍历结果集 + { + liuyan.setId(rs.getInt("id")); + liuyan.setNeirong(rs.getString("neirong")); + liuyan.setLiuyanshi(rs.getString("liuyanshi")); + liuyan.setUser_id(rs.getString("user_id")); + liuyan.setHuifu(rs.getString("huifu")); + liuyan.setHuifushi(rs.getString("huifushi")); + } + rs.close(); // 关闭结果集 + } + catch(Exception e) + { + e.printStackTrace(); // 打印异常 + } + mydb.closed(); // 关闭数据库连接 + + return liuyan; // 返回留言对象 + } + + /** + * dispatch方法用于将请求转发到指定的目标页面。 + * @param targetURI 目标页面的URI + * @param request 请求对象 + * @param response 响应对象 + */ + public void dispatch(String targetURI, HttpServletRequest request, HttpServletResponse response) + { + // 获取目标URI的RequestDispatcher + RequestDispatcher dispatch = getServletContext().getRequestDispatcher(targetURI); + try + { + dispatch.forward(request, response); // 请求转发 + } + catch (ServletException e) + { + e.printStackTrace(); // 打印异常 + } + catch (IOException e) + { + e.printStackTrace(); // 打印异常 + } + } + + /** + * init方法用于初始化Servlet配置。 + * @param config Servlet配置对象 + */ + public void init(ServletConfig config) throws ServletException + { + super.init(config); // 调用父类的初始化方法 + } + + /** + * destroy方法用于销毁Servlet实例。 + * 在Servlet销毁时清理资源,通常不需要在此类中做额外处理。 + */ + public void destroy() + { + // 在此方法中可以释放一些资源,如数据库连接等。 + } +} diff --git a/action/order_servlet.java b/action/order_servlet.java new file mode 100644 index 0000000..1048704 --- /dev/null +++ b/action/order_servlet.java @@ -0,0 +1,194 @@ +package com.itbaizhan.action; + +import java.io.IOException; +import java.sql.ResultSet; +import java.util.ArrayList; +import java.util.List; + +import javax.servlet.RequestDispatcher; +import javax.servlet.ServletConfig; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.itbaizhan.dao.DB; +import com.itbaizhan.orm.Torder; + +public class order_servlet extends HttpServlet { + + /** + * service方法根据请求的类型(type)来决定调用哪个处理方法。 + * @param req HttpServletRequest对象,包含请求参数和数据 + * @param res HttpServletResponse对象,用于返回响应数据 + * @throws ServletException Servlet异常 + * @throws IOException I/O异常 + */ + public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { + // 获取请求的type参数来判断要执行的操作 + String type = req.getParameter("type"); + + if (type.endsWith("orderMana")) { + orderMana(req, res); // 订单管理 + } + if (type.endsWith("orderDel")) { + orderDel(req, res); // 订单删除 + } + if (type.endsWith("orderShouli")) { + orderShouli(req, res); // 受理订单 + } + + if (type.endsWith("huifuAdd")) { + huifuAdd(req, res); // 添加回复 + } + } + + /** + * orderMana方法用于查询所有订单并展示在管理页面。 + * 查询数据库中所有订单,并将其保存到request中供JSP页面显示。 + * @param req HttpServletRequest对象 + * @param res HttpServletResponse对象 + * @throws ServletException Servlet异常 + * @throws IOException I/O异常 + */ + public void orderMana(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { + List orderList = new ArrayList(); // 用来保存订单列表 + String sql = "select * from t_order order by zhuangtai desc"; // 查询所有订单,按状态倒序排列 + Object[] params = {}; // SQL语句参数,当前查询没有参数 + + DB mydb = new DB(); // 创建DB对象来操作数据库 + try { + mydb.doPstm(sql, params); // 执行SQL查询 + ResultSet rs = mydb.getRs(); // 获取查询结果集 + while (rs.next()) { + Torder order = new Torder(); // 创建Torder对象来封装每一条订单数据 + + // 从结果集中提取每个字段的值,并设置到Torder对象中 + order.setId(rs.getString("id")); + order.setBianhao(rs.getString("bianhao")); + order.setShijian(rs.getString("shijian")); + order.setZhuangtai(rs.getString("zhuangtai")); + order.setHuifu(rs.getString("huifu")); + order.setSonghuodizhi(rs.getString("songhuodizhi")); + order.setFukuanfangshi(rs.getString("fukuanfangshi")); + order.setJine(rs.getInt("jine")); + order.setUser_id(rs.getString("user_id")); + + // 将订单添加到订单列表 + orderList.add(order); + } + rs.close(); // 关闭结果集 + } catch (Exception e) { + e.printStackTrace(); // 捕获异常并打印堆栈信息 + } + mydb.closed(); // 关闭数据库连接 + + // 将订单列表保存到request中,以便JSP页面进行展示 + req.setAttribute("orderList", orderList); + req.getRequestDispatcher("admin/order/orderMana.jsp").forward(req, res); // 请求转发到订单管理页面 + } + + /** + * orderDel方法用于删除指定ID的订单。 + * @param req HttpServletRequest对象 + * @param res HttpServletResponse对象 + * @throws ServletException Servlet异常 + * @throws IOException I/O异常 + */ + public void orderDel(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { + String id = req.getParameter("id"); // 获取要删除订单的ID + + // 编写SQL语句删除指定ID的订单 + String sql = "delete from t_order where id=?"; + Object[] params = { id }; // 设置参数为订单ID + DB mydb = new DB(); // 创建DB对象 + mydb.doPstm(sql, params); // 执行删除操作 + mydb.closed(); // 关闭数据库连接 + + // 设置删除成功的消息,并转发到消息页面显示 + req.setAttribute("msg", "信息删除完毕"); + String targetURL = "/common/msg.jsp"; + dispatch(targetURL, req, res); + } + + /** + * orderShouli方法用于受理订单,将订单状态更改为已受理。 + * @param req HttpServletRequest对象 + * @param res HttpServletResponse对象 + * @throws ServletException Servlet异常 + * @throws IOException I/O异常 + */ + public void orderShouli(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { + String id = req.getParameter("id"); // 获取要受理的订单ID + + // 编写SQL语句更新订单的状态为"yes"(已受理) + String sql = "update t_order set zhuangtai='yes' where id=?"; + Object[] params = { id }; // 设置参数为订单ID + DB mydb = new DB(); // 创建DB对象 + mydb.doPstm(sql, params); // 执行更新操作 + mydb.closed(); // 关闭数据库连接 + + // 设置受理成功的消息,并转发到消息页面显示 + req.setAttribute("msg", "订单受理完毕"); + String targetURL = "/common/msg.jsp"; + dispatch(targetURL, req, res); + } + + /** + * huifuAdd方法用于为订单添加回复信息。 + * @param req HttpServletRequest对象 + * @param res HttpServletResponse对象 + * @throws ServletException Servlet异常 + * @throws IOException I/O异常 + */ + public void huifuAdd(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { + String id = req.getParameter("id"); // 获取订单ID + String huifu = req.getParameter("huifu"); // 获取回复内容 + + // 编写SQL语句更新订单的回复内容 + String sql = "update t_order set huifu=? where id=?"; + Object[] params = { huifu, id }; // 设置参数为回复内容和订单ID + DB mydb = new DB(); // 创建DB对象 + mydb.doPstm(sql, params); // 执行更新操作 + mydb.closed(); // 关闭数据库连接 + + // 设置回复成功的消息,并转发到消息页面显示 + req.setAttribute("msg", "操作成功"); + String targetURL = "/common/msg.jsp"; + dispatch(targetURL, req, res); + } + + /** + * dispatch方法用于将请求转发到指定的目标页面。 + * @param targetURI 目标页面的URI + * @param request 请求对象 + * @param response 响应对象 + */ + public void dispatch(String targetURI, HttpServletRequest request, HttpServletResponse response) { + // 获取目标URI的RequestDispatcher + RequestDispatcher dispatch = getServletContext().getRequestDispatcher(targetURI); + try { + dispatch.forward(request, response); // 执行请求转发 + } catch (ServletException e) { + e.printStackTrace(); // 捕获并打印异常 + } catch (IOException e) { + e.printStackTrace(); // 捕获并打印异常 + } + } + + /** + * init方法用于初始化Servlet配置。 + * @param config Servlet配置对象 + */ + public void init(ServletConfig config) throws ServletException { + super.init(config); // 调用父类的初始化方法 + } + + /** + * destroy方法用于销毁Servlet实例。 + * 在Servlet销毁时清理资源,通常不需要在此类中做额外处理。 + */ + public void destroy() { + // 在此方法中可以释放一些资源,如数据库连接等 + } +} diff --git a/action/user_servlet.java b/action/user_servlet.java new file mode 100644 index 0000000..ec83748 --- /dev/null +++ b/action/user_servlet.java @@ -0,0 +1,234 @@ +package com.itbaizhan.action; + +import java.io.IOException; +import java.sql.ResultSet; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import javax.servlet.RequestDispatcher; +import javax.servlet.ServletConfig; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import com.itbaizhan.dao.DB; +import com.itbaizhan.orm.Tuser; +import com.itbaizhan.service.liuService; + +public class user_servlet extends HttpServlet { + + /** + * service方法根据请求的类型(type)来决定调用哪个处理方法。 + * @param req HttpServletRequest对象,包含请求参数和数据 + * @param res HttpServletResponse对象,用于返回响应数据 + * @throws ServletException Servlet异常 + * @throws IOException I/O异常 + */ + public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { + // 获取请求的type参数来判断要执行的操作 + String type = req.getParameter("type"); + + if (type.endsWith("userReg")) { + userReg(req, res); // 会员注册 + } + if (type.endsWith("userLogout")) { + userLogout(req, res); // 会员退出 + } + if (type.endsWith("userMana")) { + userMana(req, res); // 会员管理 + } + if (type.endsWith("userDel")) { + userDel(req, res); // 会员删除 + } + + if (type.endsWith("userDetail")) { + userDetail(req, res); // 会员详细信息 + } + } + + /** + * userReg方法用于会员注册。 + * 该方法获取用户提交的注册信息,检查账号是否已被占用,如果没有被占用则执行注册操作。 + * @param req HttpServletRequest对象 + * @param res HttpServletResponse对象 + */ + public void userReg(HttpServletRequest req, HttpServletResponse res) { + String id = String.valueOf(new Date().getTime()); // 使用当前时间戳作为用户ID + String loginname = req.getParameter("loginname"); // 获取用户名 + String loginpw = req.getParameter("loginpw"); // 获取密码 + String name = req.getParameter("name"); // 获取用户姓名 + String del = "no"; // 设置删除标志为"no"表示用户没有被删除 + + // 检查账号是否已经被占用 + String s = liuService.panduan_zhanghao(loginname); + if (s.equals("yizhan")) { + // 如果账号已经被占用,返回提示信息 + req.setAttribute("message", "账号已被占用,请输入其他账号"); + req.setAttribute("path", "site/userreg/userreg.jsp"); + String targetURL = "/common/success.jsp"; + dispatch(targetURL, req, res); + } else { + // 如果账号未被占用,则执行注册操作 + String sql = "insert into t_user values(?,?,?,?,?)"; // 插入新用户的SQL语句 + Object[] params = {id, loginname, loginpw, name, del}; // 设置SQL语句的参数 + DB mydb = new DB(); + mydb.doPstm(sql, params); // 执行插入操作 + mydb.closed(); // 关闭数据库连接 + + // 注册成功,返回成功页面 + req.setAttribute("message", "注册成功,请登录"); + req.setAttribute("path", "site/default.jsp"); + String targetURL = "/common/success.jsp"; + dispatch(targetURL, req, res); + } + } + + /** + * userLogout方法用于会员退出系统。 + * @param req HttpServletRequest对象 + * @param res HttpServletResponse对象 + * @throws ServletException Servlet异常 + * @throws IOException I/O异常 + */ + public void userLogout(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { + HttpSession session = req.getSession(); // 获取当前会话 + session.setAttribute("userType", null); // 清除会话中的用户类型 + session.setAttribute("user", null); // 清除会话中的用户信息 + + // 提示用户退出成功 + req.setAttribute("message", "成功退出系统"); + req.setAttribute("path", "site/default.jsp"); + String targetURL = "/common/success.jsp"; + dispatch(targetURL, req, res); + } + + /** + * userMana方法用于会员管理,查询所有未删除的会员。 + * @param req HttpServletRequest对象 + * @param res HttpServletResponse对象 + * @throws ServletException Servlet异常 + * @throws IOException I/O异常 + */ + public void userMana(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { + List userList = new ArrayList(); // 用于保存用户信息的列表 + String sql = "select * from t_user where del='no'"; // 查询所有未被删除的用户 + Object[] params = {}; // SQL查询没有参数 + DB mydb = new DB(); + try { + mydb.doPstm(sql, params); // 执行查询操作 + ResultSet rs = mydb.getRs(); // 获取查询结果集 + while (rs.next()) { + Tuser user = new Tuser(); // 创建Tuser对象来封装每个用户的数据 + user.setId(rs.getString("id")); + user.setLoginname(rs.getString("loginname")); + user.setLoginpw(rs.getString("loginpw")); + user.setName(rs.getString("name")); + userList.add(user); // 将用户添加到列表中 + } + rs.close(); // 关闭结果集 + } catch (Exception e) { + e.printStackTrace(); // 捕获异常并打印堆栈信息 + } + mydb.closed(); // 关闭数据库连接 + + // 将用户列表传递给JSP页面 + req.setAttribute("userList", userList); + req.getRequestDispatcher("admin/user/userMana.jsp").forward(req, res); + } + + /** + * userDel方法用于删除指定ID的用户。 + * 实际上是将用户的`del`字段更新为"yes"表示删除。 + * @param req HttpServletRequest对象 + * @param res HttpServletResponse对象 + * @throws ServletException Servlet异常 + * @throws IOException I/O异常 + */ + public void userDel(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { + String id = req.getParameter("id"); // 获取要删除用户的ID + String sql = "update t_user set del='yes' where id=?"; // 更新SQL语句,将del字段设为"yes" + Object[] params = {id}; // 设置参数为用户ID + DB mydb = new DB(); + mydb.doPstm(sql, params); // 执行更新操作 + mydb.closed(); // 关闭数据库连接 + + // 返回删除成功的消息 + req.setAttribute("msg", "用户信息删除完毕"); + String targetURL = "/common/msg.jsp"; + dispatch(targetURL, req, res); + } + + /** + * userDetail方法用于查看指定用户的详细信息。 + * @param req HttpServletRequest对象 + * @param res HttpServletResponse对象 + * @throws ServletException Servlet异常 + * @throws IOException I/O异常 + */ + public void userDetail(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { + String id = req.getParameter("id"); // 获取用户ID + List userList = new ArrayList(); // 用于保存用户信息的列表 + String sql = "select * from t_user where id=?"; // 查询指定ID的用户 + Object[] params = {id}; // 设置参数为用户ID + DB mydb = new DB(); + try { + mydb.doPstm(sql, params); // 执行查询操作 + ResultSet rs = mydb.getRs(); // 获取查询结果集 + while (rs.next()) { + Tuser user = new Tuser(); // 创建Tuser对象来封装用户数据 + user.setId(rs.getString("id")); + user.setLoginname(rs.getString("loginname")); + user.setLoginpw(rs.getString("loginpw")); + user.setName(rs.getString("name")); + userList.add(user); // 将用户添加到列表中 + } + rs.close(); // 关闭结果集 + } catch (Exception e) { + e.printStackTrace(); // 捕获异常并打印堆栈信息 + } + mydb.closed(); // 关闭数据库连接 + + // 获取用户信用信息,并将数据传递给JSP页面 + req.setAttribute("userList", userList); + req.setAttribute("xinyongList", liuService.getxinyongList(id)); + req.getRequestDispatcher("admin/user/userDetail.jsp").forward(req, res); + } + + /** + * dispatch方法用于将请求转发到指定的目标页面。 + * @param targetURI 目标页面的URI + * @param request 请求对象 + * @param response 响应对象 + */ + public void dispatch(String targetURI, HttpServletRequest request, HttpServletResponse response) { + // 获取目标URI的RequestDispatcher + RequestDispatcher dispatch = getServletContext().getRequestDispatcher(targetURI); // 获取请求转发器 + try { + dispatch.forward(request, response); // 执行请求转发 + return; + } catch (ServletException e) { + e.printStackTrace(); // 捕获ServletException异常并打印堆栈信息 + } catch (IOException e) { + e.printStackTrace(); // 捕获IOException异常并打印堆栈信息 + } + } + + /** + * init方法在Servlet初始化时调用,通常用于一些初始化操作。 + * @param config ServletConfig对象,包含Servlet的配置参数 + * @throws ServletException Servlet初始化异常 + */ + public void init(ServletConfig config) throws ServletException { + super.init(config); // 调用父类的init方法进行初始化 + } + + /** + * destroy方法在Servlet销毁时调用,用于清理资源。 + */ + public void destroy() { + // 在此方法中执行清理工作,例如关闭数据库连接等资源释放操作。 + } +} diff --git a/action/xinyong_servlet.java b/action/xinyong_servlet.java new file mode 100644 index 0000000..cb14738 --- /dev/null +++ b/action/xinyong_servlet.java @@ -0,0 +1,160 @@ +package com.itbaizhan.action; + +import java.io.IOException; +import java.sql.ResultSet; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import javax.servlet.RequestDispatcher; +import javax.servlet.ServletConfig; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.itbaizhan.dao.DB; +import com.itbaizhan.orm.Txinyong; + +public class xinyong_servlet extends HttpServlet { + + /** + * service方法,根据请求的type参数决定调用哪个功能方法。 + * @param req HttpServletRequest 请求对象 + * @param res HttpServletResponse 响应对象 + * @throws ServletException Servlet异常 + * @throws IOException IO异常 + */ + public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { + String type = req.getParameter("type"); // 获取请求参数 type + + if (type.endsWith("xinyongAdd")) { + xinyongAdd(req, res); // 调用信用添加方法 + } + if (type.endsWith("xinyongMana")) { + xinyongMana(req, res); // 调用信用管理方法 + } + if (type.endsWith("xinyongDel")) { + xinyongDel(req, res); // 调用信用删除方法 + } + } + + /** + * 处理信用添加功能。 + * @param req HttpServletRequest 请求对象 + * @param res HttpServletResponse 响应对象 + */ + public void xinyongAdd(HttpServletRequest req, HttpServletResponse res) { + String id = String.valueOf(new Date().getTime()); // 使用当前时间戳生成唯一ID + String shuxing = req.getParameter("shuxing").trim(); // 获取信用属性 + String neirong = req.getParameter("neirong").trim(); // 获取信用内容 + String shijian = req.getParameter("shijian").trim(); // 获取时间 + String user_id = req.getParameter("user_id").trim(); // 获取用户ID + + // 插入SQL语句 + String sql = "insert into t_xinyong(id, shuxing, neirong, shijian, user_id) values(?,?,?,?,?)"; + Object[] params = {id, shuxing, neirong, shijian, user_id}; + DB mydb = new DB(); + mydb.doPstm(sql, params); // 执行插入操作 + mydb.closed(); // 关闭数据库连接 + + req.setAttribute("msg", "操作成功"); // 设置提示消息 + String targetURL = "/common/msg.jsp"; // 跳转到提示页面 + dispatch(targetURL, req, res); // 执行请求转发 + } + + /** + * 处理信用管理功能。 + * @param req HttpServletRequest 请求对象 + * @param res HttpServletResponse 响应对象 + * @throws ServletException Servlet异常 + * @throws IOException IO异常 + */ + public void xinyongMana(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { + String user_id = req.getParameter("user_id").trim(); // 获取用户ID + + List xinyongList = new ArrayList(); // 用于存储信用记录的列表 + String sql = "select * from t_xinyong where user_id=?"; + Object[] params = {user_id}; + DB mydb = new DB(); + try { + mydb.doPstm(sql, params); // 执行查询操作 + ResultSet rs = mydb.getRs(); // 获取查询结果集 + while (rs.next()) { + Txinyong xinyong = new Txinyong(); // 创建信用对象 + + // 设置信用对象的属性 + xinyong.setId(rs.getString("id")); + xinyong.setShuxing(rs.getString("shuxing")); + xinyong.setNeirong(rs.getString("neirong")); + xinyong.setShijian(rs.getString("shijian")); + xinyong.setUser_id(rs.getString("user_id")); + + xinyongList.add(xinyong); // 将信用对象添加到列表中 + } + rs.close(); // 关闭结果集 + } catch (Exception e) { + e.printStackTrace(); // 捕获异常并打印堆栈信息 + } + mydb.closed(); // 关闭数据库连接 + + req.setAttribute("xinyongList", xinyongList); // 将信用列表传递到请求中 + req.getRequestDispatcher("admin/xinyong/xinyongMana.jsp").forward(req, res); // 转发请求到管理页面 + } + + /** + * 处理信用删除功能。 + * @param req HttpServletRequest 请求对象 + * @param res HttpServletResponse 响应对象 + * @throws ServletException Servlet异常 + * @throws IOException IO异常 + */ + public void xinyongDel(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { + String id = req.getParameter("id").trim(); // 获取信用记录ID + + String sql = "delete from t_xinyong where id=?"; + Object[] params = {id}; + DB mydb = new DB(); + mydb.doPstm(sql, params); // 执行删除操作 + mydb.closed(); // 关闭数据库连接 + + req.setAttribute("msg", "操作成功"); // 设置提示消息 + String targetURL = "/common/msg.jsp"; // 跳转到提示页面 + dispatch(targetURL, req, res); // 执行请求转发 + } + + /** + * 执行请求转发到指定页面。 + * @param targetURI 目标页面的URI + * @param request HttpServletRequest 请求对象 + * @param response HttpServletResponse 响应对象 + */ + public void dispatch(String targetURI, HttpServletRequest request, HttpServletResponse response) { + RequestDispatcher dispatch = getServletContext().getRequestDispatcher(targetURI); // 获取请求转发器 + try { + dispatch.forward(request, response); // 执行转发 + return; + } catch (ServletException e) { + e.printStackTrace(); // 捕获并打印ServletException异常 + } catch (IOException e) { + e.printStackTrace(); // 捕获并打印IOException异常 + } + } + + /** + * Servlet初始化方法,在Servlet实例化时调用。 + * @param config ServletConfig对象,包含Servlet配置参数 + * @throws ServletException Servlet异常 + */ + public void init(ServletConfig config) throws ServletException { + super.init(config); // 调用父类的init方法进行初始化 + } + + /** + * Servlet销毁方法,在Servlet销毁时调用。 + * 用于释放资源,如关闭数据库连接等。 + */ + public void destroy() { + // 在此方法中执行清理工作,例如释放数据库连接等 + } +} diff --git a/dao/DB.java b/dao/DB.java new file mode 100644 index 0000000..cd69985 --- /dev/null +++ b/dao/DB.java @@ -0,0 +1,124 @@ +package com.itbaizhan.dao; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + +public class DB { + + private Connection con; // 用于数据库连接的Connection对象 + private PreparedStatement pstm; // 用于执行SQL语句的PreparedStatement对象 + + private String user = "root"; // 数据库连接的用户名 + private String password = "root"; // 数据库连接的密码 + private String className = "com.mysql.cj.jdbc.Driver"; // MySQL数据库的JDBC驱动类名 + private String url = "jdbc:mysql://localhost:3306/db_dingcan?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8"; // 数据库URL,包含数据库名、字符编码、时区等配置 + + /** + * 构造方法,加载数据库驱动 + */ + public DB() { + try { + // 加载MySQL JDBC驱动程序 + Class.forName(className); + } catch (ClassNotFoundException e) { + System.out.println("加载数据库驱动失败!"); + e.printStackTrace(); + } + } + + /** + * 创建并返回数据库连接 + * @return Connection 对象,代表数据库连接 + */ + public Connection getCon() { + try { + // 通过DriverManager获取数据库连接 + con = DriverManager.getConnection(url, user, password); + } catch (SQLException e) { + System.out.println("创建数据库连接失败!"); + con = null; // 如果连接失败,设置con为null + e.printStackTrace(); + } + return con; + } + + /** + * 执行增、删、改操作的通用方法 + * @param sql 执行的SQL语句 + * @param params SQL语句的参数集合 + */ + public void doPstm(String sql, Object[] params) { + // 如果SQL语句不为空 + if (sql != null && !sql.equals("")) { + // 如果参数为空,则初始化为空数组 + if (params == null) { + params = new Object[0]; // 初始化参数为空数组 + } + + // 获取数据库连接 + getCon(); + if (con != null) { + try { + System.out.println(sql); // 打印执行的SQL语句,方便调试 + + // 创建PreparedStatement对象,传入SQL语句 + pstm = con.prepareStatement(sql, + ResultSet.TYPE_SCROLL_INSENSITIVE, // 结果集类型:不敏感,不会因为数据库的变化而更新 + ResultSet.CONCUR_READ_ONLY); // 结果集:只读 + // 设置SQL语句中的参数 + for (int i = 0; i < params.length; i++) { + pstm.setObject(i + 1, params[i]); // 设定PreparedStatement对象的参数 + } + // 执行SQL语句 + pstm.execute(); // 执行语句,增、删、改操作 + } catch (SQLException e) { + System.out.println("doPstm()方法出错!"); + e.printStackTrace(); + } + } + } + } + + /** + * 获取查询操作的结果集 + * @return ResultSet 返回查询结果集 + * @throws SQLException SQL异常 + */ + public ResultSet getRs() throws SQLException { + return pstm.getResultSet(); // 获取PreparedStatement对象的查询结果集 + } + + /** + * 获取最近一次操作(增、删、改)影响的记录条数 + * @return int 返回更新影响的记录数 + * @throws SQLException SQL异常 + */ + public int getCount() throws SQLException { + return pstm.getUpdateCount(); // 获取更新操作影响的记录数(如插入、更新、删除的行数) + } + + /** + * 关闭数据库连接和PreparedStatement对象,释放资源 + */ + public void closed() { + try { + if (pstm != null) { + pstm.close(); // 关闭PreparedStatement对象 + } + } catch (SQLException e) { + System.out.println("关闭pstm对象失败!"); + e.printStackTrace(); + } + try { + if (con != null) { + con.close(); // 关闭数据库连接 + } + } catch (SQLException e) { + System.out.println("关闭con对象失败!"); + e.printStackTrace(); + } + } +} diff --git a/js/popup.js b/js/popup.js deleted file mode 100644 index 908b32f..0000000 --- a/js/popup.js +++ /dev/null @@ -1,188 +0,0 @@ -锘縱ar tcolor={ - cColor:"#EEEEEE", //钂欑毊棰滆壊 - bColor:"#FFFFFF", //鑳屾櫙棰滆壊 - tColor:"#9C9E9C", //鏍囬鑳屾櫙棰滆壊锛岃竟妗嗛鑹 - wColor:"#FFFFFF" //鏍囬鏂囧瓧棰滆壊 - }; - -function popclose() -{ -var a = parent.document.getElementById("dialogBoxClose"); -a.click(); -} - -if(!Array.prototype.push){ -Array.prototype.push=function(){ - var startLength=this.length; - for(var i=0;i'; - var close=''; - var cB='filter: alpha(opacity='+this.info.coverOpacity+');opacity:'+this.info.coverOpacity/100+';'; - var cover=''; - var mainBox=''+''; - if(!this.config.isBackgroundCanClick){G('dialogCase').innerHTML=cover+mainBox;G('dialogBoxBG').style.height=document.body.scrollHeight} - else G('dialogCase').innerHTML=mainBox;Event.observe(G('dialogBoxClose'),"click",this.reset.bindAsEventListener(this),false); - if(this.config.isSupportDraging){dropClass=new Dragdrop(this.config.width,this.config.height,this.info.shadowWidth,this.config.isSupportDraging,this.config.contentType);G("dialogBoxTitle").style.cursor="move"};this.lastBuild()},lastBuild:function(){var confirm='
'+this.info.confirmCon+'
 
'; - var alert='
'+this.info.alertCon+'
'; - var baseZIndex=10001+this.info.overlay*10;var coverIfZIndex=baseZIndex+4; - if(this.config.contentType==1){var openIframe=""; - var coverIframe="
";G("dialogBody").innerHTML=openIframe+coverIframe} - else if(this.config.contentType==2){G("dialogBody").innerHTML=this.info.contentHtml}else if(this.config.contentType==3){G("dialogBody").innerHTML=confirm;Event.observe(G('dialogOk'),"click",this.forCallback.bindAsEventListener(this),false); - Event.observe(G('dialogCancel'),"click",this.close.bindAsEventListener(this),false)}else if(this.config.contentType==4){G("dialogBody").innerHTML=alert;Event.observe(G('dialogYES'),"click",this.close.bindAsEventListener(this),false)}},reBuild:function(){G('dialogBody').height=G('dialogBody').clientHeight;this.lastBuild()},show:function(){this.hiddenSome();this.middle();if(this.config.isShowShadow)this.shadow()},forCallback:function(){return this.info.callBack(this.info.parameter)},shadow:function(){var oShadow=G('dialogBoxShadow');var oDialog=G('dialogBox');oShadow['style']['position']="absolute";oShadow['style']['background']="#000";oShadow['style']['display']="";oShadow['style']['opacity']="0.2";oShadow['style']['filter']="alpha(opacity=20)";oShadow['style']['top']=oDialog.offsetTop+this.info.shadowWidth;oShadow['style']['left']=oDialog.offsetLeft+this.info.shadowWidth;oShadow['style']['width']=oDialog.offsetWidth;oShadow['style']['height']=oDialog.offsetHeight},middle:function(){if(!this.config.isBackgroundCanClick)G('dialogBoxBG').style.display=''; - var oDialog=G('dialogBox'); - oDialog['style']['position']="absolute"; - oDialog['style']['display']=''; - //鍙栧緱椤甸潰鐨勫搴﹀拰楂樺害 - var sClientWidth=document.body.clientWidth; - var sClientHeight=document.body.clientHeight; - var sScrollTop=document.body.scrollTop; - // - var sleft=(sClientWidth/2)-(oDialog.offsetWidth/2); - var iTop=-80+(sClientHeight/2+sScrollTop)-(oDialog.offsetHeight/2); - var sTop=iTop>0?iTop:(sClientHeight/2+sScrollTop)-(oDialog.offsetHeight/2); - if(sTop<1)sTop="20";if(sleft<1)sleft="20"; - oDialog['style']['left']=sleft+"px"; //宸︿晶浣嶇疆 - oDialog['style']['top']=220+"px" //椤堕儴浣嶇疆 - }, - reset:function(){if(this.config.isReloadOnClose){top.location.reload()};this.close()},close:function(){G('dialogBox').style.display='none'; - if(!this.config.isBackgroundCanClick)G('dialogBoxBG').style.display='none'; - if(this.config.isShowShadow)G('dialogBoxShadow').style.display='none';G('dialogBody').innerHTML=''; - this.showSome()},hiddenSome:function(){var tag=this.info.someHiddenTag.split(","); - if(tag.length==1&&tag[0]=="")tag.length=0; - for(var i=0;iparseInt(this.oObj.style.top)+25)iTop=iTop+12;this.oObj.style.left=iLeft;this.oObj.style.top=iTop;if(this.showShadow){G('dialogBoxShadow').style.left=iLeft+this.shadowWidth;G('dialogBoxShadow').style.top=iTop+this.shadowWidth};this.dragData={x:Event.pointerX(event),y:Event.pointerY(event)};document.body.style.cursor="move"},mouseup:function(event){if(!this.IsDraging)return;if(this.contentType==1)G("iframeBG").style.display="none";document.onmousemove=null;document.onmouseup=null;var mousX=Event.pointerX(event)-(document.documentElement.scrollLeft||document.body.scrollLeft);var mousY=Event.pointerY(event)-(document.documentElement.scrollTop||document.body.scrollTop);if(mousX<1||mousY<1||mousX>document.body.clientWidth||mousY>document.body.clientHeight){this.oObj.style.left=this.backData["x"];this.oObj.style.top=this.backData["y"];if(this.showShadow){G('dialogBoxShadow').style.left=this.backData.x+this.shadowWidth;G('dialogBoxShadow').style.top=this.backData.y+this.shadowWidth}};this.IsDraging=false;document.body.style.cursor="";Event.stopObserving(document,"selectstart",this.returnFalse,false)},returnFalse:function(){return false}}; - - - diff --git a/js/popup_shuaxin.js b/js/popup_shuaxin.js deleted file mode 100644 index c298f21..0000000 --- a/js/popup_shuaxin.js +++ /dev/null @@ -1,188 +0,0 @@ -锘縱ar tcolor={ - cColor:"#EEEEEE", //钂欑毊棰滆壊 - bColor:"#FFFFFF", //鑳屾櫙棰滆壊 - tColor:"#9C9E9C", //鏍囬鑳屾櫙棰滆壊锛岃竟妗嗛鑹 - wColor:"#FFFFFF" //鏍囬鏂囧瓧棰滆壊 - }; - -function popclose() -{ -var a = parent.document.getElementById("dialogBoxClose"); -a.click(); -} - -if(!Array.prototype.push){ -Array.prototype.push=function(){ - var startLength=this.length; - for(var i=0;i'; - var close=''; - var cB='filter: alpha(opacity='+this.info.coverOpacity+');opacity:'+this.info.coverOpacity/100+';'; - var cover=''; - var mainBox=''+''; - if(!this.config.isBackgroundCanClick){G('dialogCase').innerHTML=cover+mainBox;G('dialogBoxBG').style.height=document.body.scrollHeight} - else G('dialogCase').innerHTML=mainBox;Event.observe(G('dialogBoxClose'),"click",this.reset.bindAsEventListener(this),false); - if(this.config.isSupportDraging){dropClass=new Dragdrop(this.config.width,this.config.height,this.info.shadowWidth,this.config.isSupportDraging,this.config.contentType);G("dialogBoxTitle").style.cursor="move"};this.lastBuild()},lastBuild:function(){var confirm='
'+this.info.confirmCon+'
 
'; - var alert='
'+this.info.alertCon+'
'; - var baseZIndex=10001+this.info.overlay*10;var coverIfZIndex=baseZIndex+4; - if(this.config.contentType==1){var openIframe=""; - var coverIframe="
";G("dialogBody").innerHTML=openIframe+coverIframe} - else if(this.config.contentType==2){G("dialogBody").innerHTML=this.info.contentHtml}else if(this.config.contentType==3){G("dialogBody").innerHTML=confirm;Event.observe(G('dialogOk'),"click",this.forCallback.bindAsEventListener(this),false); - Event.observe(G('dialogCancel'),"click",this.close.bindAsEventListener(this),false)}else if(this.config.contentType==4){G("dialogBody").innerHTML=alert;Event.observe(G('dialogYES'),"click",this.close.bindAsEventListener(this),false)}},reBuild:function(){G('dialogBody').height=G('dialogBody').clientHeight;this.lastBuild()},show:function(){this.hiddenSome();this.middle();if(this.config.isShowShadow)this.shadow()},forCallback:function(){return this.info.callBack(this.info.parameter)},shadow:function(){var oShadow=G('dialogBoxShadow');var oDialog=G('dialogBox');oShadow['style']['position']="absolute";oShadow['style']['background']="#000";oShadow['style']['display']="";oShadow['style']['opacity']="0.2";oShadow['style']['filter']="alpha(opacity=20)";oShadow['style']['top']=oDialog.offsetTop+this.info.shadowWidth;oShadow['style']['left']=oDialog.offsetLeft+this.info.shadowWidth;oShadow['style']['width']=oDialog.offsetWidth;oShadow['style']['height']=oDialog.offsetHeight},middle:function(){if(!this.config.isBackgroundCanClick)G('dialogBoxBG').style.display=''; - var oDialog=G('dialogBox'); - oDialog['style']['position']="absolute"; - oDialog['style']['display']=''; - //鍙栧緱椤甸潰鐨勫搴﹀拰楂樺害 - var sClientWidth=document.body.clientWidth; - var sClientHeight=document.body.clientHeight; - var sScrollTop=document.body.scrollTop; - // - var sleft=(sClientWidth/2)-(oDialog.offsetWidth/2); - var iTop=-80+(sClientHeight/2+sScrollTop)-(oDialog.offsetHeight/2); - var sTop=iTop>0?iTop:(sClientHeight/2+sScrollTop)-(oDialog.offsetHeight/2); - if(sTop<1)sTop="20";if(sleft<1)sleft="20"; - oDialog['style']['left']=sleft+"px"; //宸︿晶浣嶇疆 - oDialog['style']['top']=220+"px" //椤堕儴浣嶇疆 - }, - reset:function(){if(this.config.isReloadOnClose){top.location.reload()};this.close()},close:function(){G('dialogBox').style.display='none';window.location.reload(); - if(!this.config.isBackgroundCanClick)G('dialogBoxBG').style.display='none'; - if(this.config.isShowShadow)G('dialogBoxShadow').style.display='none';G('dialogBody').innerHTML=''; - this.showSome()},hiddenSome:function(){var tag=this.info.someHiddenTag.split(","); - if(tag.length==1&&tag[0]=="")tag.length=0; - for(var i=0;iparseInt(this.oObj.style.top)+25)iTop=iTop+12;this.oObj.style.left=iLeft;this.oObj.style.top=iTop;if(this.showShadow){G('dialogBoxShadow').style.left=iLeft+this.shadowWidth;G('dialogBoxShadow').style.top=iTop+this.shadowWidth};this.dragData={x:Event.pointerX(event),y:Event.pointerY(event)};document.body.style.cursor="move"},mouseup:function(event){if(!this.IsDraging)return;if(this.contentType==1)G("iframeBG").style.display="none";document.onmousemove=null;document.onmouseup=null;var mousX=Event.pointerX(event)-(document.documentElement.scrollLeft||document.body.scrollLeft);var mousY=Event.pointerY(event)-(document.documentElement.scrollTop||document.body.scrollTop);if(mousX<1||mousY<1||mousX>document.body.clientWidth||mousY>document.body.clientHeight){this.oObj.style.left=this.backData["x"];this.oObj.style.top=this.backData["y"];if(this.showShadow){G('dialogBoxShadow').style.left=this.backData.x+this.shadowWidth;G('dialogBoxShadow').style.top=this.backData.y+this.shadowWidth}};this.IsDraging=false;document.body.style.cursor="";Event.stopObserving(document,"selectstart",this.returnFalse,false)},returnFalse:function(){return false}}; - - - diff --git a/js/popup_shuaxin_no.js b/js/popup_shuaxin_no.js deleted file mode 100644 index 908b32f..0000000 --- a/js/popup_shuaxin_no.js +++ /dev/null @@ -1,188 +0,0 @@ -锘縱ar tcolor={ - cColor:"#EEEEEE", //钂欑毊棰滆壊 - bColor:"#FFFFFF", //鑳屾櫙棰滆壊 - tColor:"#9C9E9C", //鏍囬鑳屾櫙棰滆壊锛岃竟妗嗛鑹 - wColor:"#FFFFFF" //鏍囬鏂囧瓧棰滆壊 - }; - -function popclose() -{ -var a = parent.document.getElementById("dialogBoxClose"); -a.click(); -} - -if(!Array.prototype.push){ -Array.prototype.push=function(){ - var startLength=this.length; - for(var i=0;i'; - var close=''; - var cB='filter: alpha(opacity='+this.info.coverOpacity+');opacity:'+this.info.coverOpacity/100+';'; - var cover=''; - var mainBox=''+''; - if(!this.config.isBackgroundCanClick){G('dialogCase').innerHTML=cover+mainBox;G('dialogBoxBG').style.height=document.body.scrollHeight} - else G('dialogCase').innerHTML=mainBox;Event.observe(G('dialogBoxClose'),"click",this.reset.bindAsEventListener(this),false); - if(this.config.isSupportDraging){dropClass=new Dragdrop(this.config.width,this.config.height,this.info.shadowWidth,this.config.isSupportDraging,this.config.contentType);G("dialogBoxTitle").style.cursor="move"};this.lastBuild()},lastBuild:function(){var confirm='
'+this.info.confirmCon+'
 
'; - var alert='
'+this.info.alertCon+'
'; - var baseZIndex=10001+this.info.overlay*10;var coverIfZIndex=baseZIndex+4; - if(this.config.contentType==1){var openIframe=""; - var coverIframe="
";G("dialogBody").innerHTML=openIframe+coverIframe} - else if(this.config.contentType==2){G("dialogBody").innerHTML=this.info.contentHtml}else if(this.config.contentType==3){G("dialogBody").innerHTML=confirm;Event.observe(G('dialogOk'),"click",this.forCallback.bindAsEventListener(this),false); - Event.observe(G('dialogCancel'),"click",this.close.bindAsEventListener(this),false)}else if(this.config.contentType==4){G("dialogBody").innerHTML=alert;Event.observe(G('dialogYES'),"click",this.close.bindAsEventListener(this),false)}},reBuild:function(){G('dialogBody').height=G('dialogBody').clientHeight;this.lastBuild()},show:function(){this.hiddenSome();this.middle();if(this.config.isShowShadow)this.shadow()},forCallback:function(){return this.info.callBack(this.info.parameter)},shadow:function(){var oShadow=G('dialogBoxShadow');var oDialog=G('dialogBox');oShadow['style']['position']="absolute";oShadow['style']['background']="#000";oShadow['style']['display']="";oShadow['style']['opacity']="0.2";oShadow['style']['filter']="alpha(opacity=20)";oShadow['style']['top']=oDialog.offsetTop+this.info.shadowWidth;oShadow['style']['left']=oDialog.offsetLeft+this.info.shadowWidth;oShadow['style']['width']=oDialog.offsetWidth;oShadow['style']['height']=oDialog.offsetHeight},middle:function(){if(!this.config.isBackgroundCanClick)G('dialogBoxBG').style.display=''; - var oDialog=G('dialogBox'); - oDialog['style']['position']="absolute"; - oDialog['style']['display']=''; - //鍙栧緱椤甸潰鐨勫搴﹀拰楂樺害 - var sClientWidth=document.body.clientWidth; - var sClientHeight=document.body.clientHeight; - var sScrollTop=document.body.scrollTop; - // - var sleft=(sClientWidth/2)-(oDialog.offsetWidth/2); - var iTop=-80+(sClientHeight/2+sScrollTop)-(oDialog.offsetHeight/2); - var sTop=iTop>0?iTop:(sClientHeight/2+sScrollTop)-(oDialog.offsetHeight/2); - if(sTop<1)sTop="20";if(sleft<1)sleft="20"; - oDialog['style']['left']=sleft+"px"; //宸︿晶浣嶇疆 - oDialog['style']['top']=220+"px" //椤堕儴浣嶇疆 - }, - reset:function(){if(this.config.isReloadOnClose){top.location.reload()};this.close()},close:function(){G('dialogBox').style.display='none'; - if(!this.config.isBackgroundCanClick)G('dialogBoxBG').style.display='none'; - if(this.config.isShowShadow)G('dialogBoxShadow').style.display='none';G('dialogBody').innerHTML=''; - this.showSome()},hiddenSome:function(){var tag=this.info.someHiddenTag.split(","); - if(tag.length==1&&tag[0]=="")tag.length=0; - for(var i=0;iparseInt(this.oObj.style.top)+25)iTop=iTop+12;this.oObj.style.left=iLeft;this.oObj.style.top=iTop;if(this.showShadow){G('dialogBoxShadow').style.left=iLeft+this.shadowWidth;G('dialogBoxShadow').style.top=iTop+this.shadowWidth};this.dragData={x:Event.pointerX(event),y:Event.pointerY(event)};document.body.style.cursor="move"},mouseup:function(event){if(!this.IsDraging)return;if(this.contentType==1)G("iframeBG").style.display="none";document.onmousemove=null;document.onmouseup=null;var mousX=Event.pointerX(event)-(document.documentElement.scrollLeft||document.body.scrollLeft);var mousY=Event.pointerY(event)-(document.documentElement.scrollTop||document.body.scrollTop);if(mousX<1||mousY<1||mousX>document.body.clientWidth||mousY>document.body.clientHeight){this.oObj.style.left=this.backData["x"];this.oObj.style.top=this.backData["y"];if(this.showShadow){G('dialogBoxShadow').style.left=this.backData.x+this.shadowWidth;G('dialogBoxShadow').style.top=this.backData.y+this.shadowWidth}};this.IsDraging=false;document.body.style.cursor="";Event.stopObserving(document,"selectstart",this.returnFalse,false)},returnFalse:function(){return false}}; - - - diff --git a/js/public.js b/js/public.js deleted file mode 100644 index e738129..0000000 --- a/js/public.js +++ /dev/null @@ -1,474 +0,0 @@ -锘/* - * 鎵撳紑鏂扮獥鍙 f:閾炬帴鍦板潃 n:绐楀彛鐨勫悕绉 w:绐楀彛鐨勫搴 h:绐楀彛鐨勯珮搴 s:绐楀彛鏄惁鏈夋粴鍔ㄦ潯锛1锛氭湁婊氬姩鏉★紱0锛氭病鏈夋粴鍔ㄦ潯 - */ - - - -function openWin(f, n, w, h, s) -{ - var result=window.open(f,n,"dialogHeight:"+h+";dialogWidth:"+w+";"+s); - if(result==true) - { - window.location.reload(true); - } - else - { - //window.location.reload(true); - } - -} - - - - - -/* - * 鍒犻櫎璁板綍 - */ -function del(url, info) -{ - //if (openDeleteDialog(url, info)) - //{ - //window.location.reload(true); - //} - if (confirm(info)) - { - var result=window.open(url,"window123","dialogHeight:234px;dialogWidth:271px;resizable:no;help:no;status:no;scroll:no"); - if(result==true) - { - window.location.reload(true); - } - else - { - - } - } - else - { - - } -} - - - -/* - * 鏍¢獙checkbox - */ -function checkAll(chkName, checkboxName, pageSize) { - var src = event.srcElement; - var chkN = eval("document.all." + chkName); - - if (src.checked) { - chkN[0].checked = true; - chkN[1].checked = true; - for (var i = 0; i < pageSize; i++) { - var chk = eval("document.all." + checkboxName + i); - if (chk) { - chk.checked = true; - } - } - } else { - chkN[0].checked = false; - chkN[1].checked = false; - for (var i = 0; i < pageSize; i++) { - var chk = eval("document.all." + checkboxName + i); - if (chk) { - chk.checked = false; - } - } - } -} - -/* - * - */ -function makePages(maxPage, selectedPage, selectName) { - var sel = eval("document.all." + selectName); - sel.length = 0; - for (var i = 1; i <= maxPage; i++) { - sel.options[i] = new Option(i, i); - if (sel.options[i] == selectedPage) { - sel.options[i].selected = true; - } - } -} - - - -/* - * 鏇挎崲瀛楃涓 - */ -function replaceStr(str) { - var re = "/( )/gi"; - str = str.replace(re, ""); - re = "/\= 0 && whitespace.indexOf(s.charAt(i)) != -1) { - i--; - } - s = s.substring(0, i + 1); - } - return s; -} - -/* - * 鍘绘帀涓よ竟绌烘牸 - */ -function Trim(str) { - return RTrim(LTrim(str)); -} - - - - -/* - * - */ -function exeOperation(exePath) { - var obj = new ActiveXObject("Microsoft.XMLHTTP"); - obj.open("post", exePath, false); - obj.send(); - var res = obj.responseText; - var rs = Trim(res); - if (rs.indexOf('true', 0) != -1) { - return true; - } else { - return false; - } -} - -/* - * - */ -function exeValidate(exePath) { - var obj = new ActiveXObject("Microsoft.XMLHTTP"); - obj.open("post", exePath, false); - obj.send(); - var res = obj.responseText; - var rs = Trim(res); - if (rs.indexOf('validate_login_user', 0) != -1) { - return true; - } else { - return false; - } -} - - - -/* - * 鏄剧ず - */ -function validate_date(exePath) { - var obj = new ActiveXObject("Microsoft.XMLHTTP"); - obj.open("post", exePath, false); - obj.send(); - var res = obj.responseText; - var rs = Trim(res); - var begin_str = ""; - var beginIndex = rs.indexOf(begin_str) + begin_str.length; - var endIndex = rs.indexOf(""); - rs = ((beginIndex >= 0) && (endIndex >= 0)) ? rs.substring(beginIndex, - endIndex) : ""; - return Trim(rs); -} - -/* - * 鏍¢獙鏄惁鏁板瓧 - */ -function checkNumber(name, TempS) { - for (Count = 0; Count < TempS.length; Count++) { - TempChar = TempS.substring(Count, Count + 1); - RefString = "0123456789"; - if (RefString.indexOf(TempChar, 0) == -1) { - alert("璇疯緭鍏ユ暟瀛"); - eval("document.all." + name).focus(); - return false; - } - } -} - - - -/* - * 鏄惁鏈夐潪娉曞瓧绗 - */ -function chksafe(a) { - fibdn = new Array("'", "\\"); - i = fibdn.length; - j = a.length; - for (ii = 0; ii < i; ii++) { - for (jj = 0; jj < j; jj++) { - temp1 = a.charAt(jj); - temp2 = fibdn[ii]; - if (temp1 == temp2) { - return false; - } - } - } - return true; -} - -/* - * - */ -function fucCheckNUM(NUM) { - var i, j, strTemp; - strTemp = "0123456789"; - if (NUM.length == 0) - return false; - for (i = 0; i < NUM.length; i++) { - j = strTemp.indexOf(NUM.charAt(i)); - if (j == -1) { - return false; - } - } - return true; -} - - - -/* - * - */ -function fucCheckLength(strTemp) { - var i, sum; - sum = 0; - for (i = 0; i < strTemp.length; i++) { - if ((strTemp.charCodeAt(i) >= 0) && (strTemp.charCodeAt(i) <= 255)) { - sum = sum + 1; - } else { - sum = sum + 2; - } - } - return sum; -} - -/* - * - */ -function chkElements(name, errMsg, max_length, lengthMsg) { - var el_name = eval("document.all." + name); - var v = el_name.value; - if (!chksafe(v)) { - el_name.focus(); - alert(errMsg); - return false; - } else if (fucCheckLength(v) > max_length) { - el_name.focus(); - alert(lengthMsg); - return false; - } - return true; -} - - - -/* - * 鏍¢獙绌哄瓧绗︿覆 - */ -function checkNullStr(name, msg) { - var el_name = eval("document.all." + name); - if (Trim(el_name.value).length == 0) { - alert(msg); - el_name.focus(); - return false; - } - return true; -} - - - - -/* - * 鏄剧ず鏃ユ湡鎺ian - */ -function GetDate(nText, para) { - var v_url = para == "1" ? "./common/data.html" : "../../common/data.html"; - var reVal = window - .open( - v_url, - 'data', - "status:no;center:yes;scroll:no;resizable:no;dialogWidth:255px;dialogHeight:260px"); - if (reVal != null) { - var n = eval("document.all." + nText); - n.value = reVal; - } -} - - - -/* - * 鎸夋瘮渚嬬缉灏忓浘鐗 - */ -function DrawImage(ImgD, iwidth, iheight) { - var flag = false; - var image = new Image(); - image.src = ImgD.src; - if (image.width > 0 && image.height > 0) { - flag = true; - if (image.width / image.height >= iwidth / iheight) { - if (image.width > iwidth) { - ImgD.width = iwidth; - ImgD.height = (image.height * iwidth) / image.width; - } else { - ImgD.width = image.width; - ImgD.height = image.height; - } - // ImgD.alt=image.width+"脳"+image.height; - } else { - if (image.height > iheight) { - ImgD.height = iheight; - ImgD.width = (image.width * iheight) / image.height; - } else { - ImgD.width = image.width; - ImgD.height = image.height; - } - // ImgD.alt=image.width+"脳"+image.height; - } - } - ImgD.style.visibility = "visible"; -} - - - -/* - * 鍥炶溅閿浆涓篢ab閿 - */ -function enterTab() { - if (event.keyCode == 13) { - oElement = document.activeElement; - if (oElement.tagName != "TEXTAREA" && oElement.type != "button") - event.keyCode = 9; - return; - } -} - -/* - * - */ -function objectEval(text) { - text = text.replace(/\n/g, " "); - text = text.replace(/\r/g, " "); - if (text.match(/^\s*\{.*\}\s*$/)) { - text = "[" + text + "]"; - } - return eval(text)[0]; -} - - - -/* - * 鎵撳紑棰嗗鏌ヨ椤甸潰 action - 鏌ヨ鐨凙ction method - 璋冪敤鐨勬柟娉 title - 鏍囬message name - - * 鍛樺伐閫夋嫨鍩熺殑name - */ -function openLeaderQuery(action, method, title, name) { - openWin("../../common/selectStaff.jsp?action=" + action + "&method=" - + method + "&title=" + title + "&name=" + name, - "public_leader_find_page", "400", "150"); -} - -/* - * 绗竴琛屽彉鑹 - */ -function chgColor() { - var v_table = document.all["PowerTable"]; - var v_row = v_table.rows[1]; - var len = v_row.cells.length; - for (var i = 0; i < len; i++) { - var v_cell = v_row.cells[i]; - v_cell.style.backgroundColor = "yellow"; - } -} - -/* - * 绗竴琛屽彉鑹 - */ -function chgColor2() { - var v_table = document.all["PowerTable"]; - var rows_count = v_table.rows.length; - var v_row, v_cell, temp_len, len; - var rowspan = 0; - - // get rowspan - if (v_table.rows.length > 1) { - len = v_table.rows[1].cells.length; - for (var r = 2; r < rows_count; r++) { - v_row = v_table.rows[r]; - temp_len = v_row.cells.length; - if (temp_len == len) { - rowspan = r - 1; - break; - } - } - - rowspan = (rowspan > 0) ? (rowspan + 1) : rows_count; - for (var r = 1; r < rowspan; r++) { - v_row = v_table.rows[r]; - for (var t = 0; t < v_row.cells.length; t++) { - v_cell = v_row.cells[t]; - v_cell.style.backgroundColor = "yellow"; - } - } - } -} - - - -/* - * 娣诲姞椤甸潰杞藉叆鍚庤Е鍙戠殑shijian - */ -function addLoadEvent(func) { - var oldonload = window.onload; - if (typeof(window.onload) != "function") { - window.onload = func; - } else { - window.onload = function() { - oldonload(); - func(); - } - } -} - - - -// adsName:鍚嶇О,adsUrl:鍦板潃,sTime:鏃堕棿(灏忔椂) add by wujie 2005.12.12 -function PopAds(adsName, adsUrl, sTime, number, w, h, s) { - if (document.cookie.indexOf(adsName) == -1) { - window.open(adsUrl, adsName); - self.focus(); - var expireDate = new Date(); - var lefttime = 1000 * (3600 * sTime); - expireDate.setTime(expireDate.getTime() + lefttime); - document.cookie = adsName + "=yes" + "; expires=" - + expireDate.toGMTString() + ";"; - } - openWin(adsUrl, number, w, h, s); -} diff --git a/orm/TAdmin.java b/orm/TAdmin.java new file mode 100644 index 0000000..d9995a9 --- /dev/null +++ b/orm/TAdmin.java @@ -0,0 +1,38 @@ +package com.itbaizhan.orm; + +public class TAdmin { // 管理员类 + + private int userId; // 管理员用户ID + private String userName; // 管理员用户名 + private String userPw; // 管理员密码 + + // 得到管理员用户名 + public String getUserName() { + return userName; + } + + // 设置管理员用户名 + public void setUserName(String userName) { + this.userName = userName; + } + + // 得到管理员密码 + public String getUserPw() { + return userPw; + } + + // 设置管理员密码 + public void setUserPw(String userPw) { + this.userPw = userPw; + } + + // 得到管理员用户ID + public int getUserId() { + return userId; + } + + // 设置管理员用户ID + public void setUserId(int userId) { + this.userId = userId; + } +} diff --git a/orm/TLiuyan.java b/orm/TLiuyan.java new file mode 100644 index 0000000..da5f037 --- /dev/null +++ b/orm/TLiuyan.java @@ -0,0 +1,146 @@ +package com.itbaizhan.orm; + +/** + * TLiuyan - 留言实体类 + * + * 这个类表示留言信息,包括留言的内容、留言时间、用户信息以及回复内容等。 + * 该类通常用于留言板系统,存储和管理用户的留言和管理员的回复。 + */ +public class TLiuyan implements java.io.Serializable { + + private Integer id; // 留言ID,唯一标识每一条留言 + private String neirong; // 留言内容,用户输入的留言文本 + private String liuyanshi; // 留言时间,记录用户留言的时间 + private String user_id; // 用户ID,标识留言所属的用户 + + private String huifu; // 回复内容,管理员或用户对留言的回复 + private String huifushi; // 回复时间,记录回复的时间 + + private Tuser user; // 用户信息,关联留言所属的用户对象(Tuser) + + /** + * 获取回复内容 + * + * @return 回复内容 + */ + public String getHuifu() { + return huifu; + } + + /** + * 设置回复内容 + * + * @param huifu 回复内容 + */ + public void setHuifu(String huifu) { + this.huifu = huifu; + } + + /** + * 获取回复时间 + * + * @return 回复时间 + */ + public String getHuifushi() { + return huifushi; + } + + /** + * 设置回复时间 + * + * @param huifushi 回复时间 + */ + public void setHuifushi(String huifushi) { + this.huifushi = huifushi; + } + + /** + * 获取留言ID + * + * @return 留言ID + */ + public Integer getId() { + return id; + } + + /** + * 设置留言ID + * + * @param id 留言ID + */ + public void setId(Integer id) { + this.id = id; + } + + /** + * 获取留言时间 + * + * @return 留言时间 + */ + public String getLiuyanshi() { + return liuyanshi; + } + + /** + * 设置留言时间 + * + * @param liuyanshi 留言时间 + */ + public void setLiuyanshi(String liuyanshi) { + this.liuyanshi = liuyanshi; + } + + /** + * 获取留言内容 + * + * @return 留言内容 + */ + public String getNeirong() { + return neirong; + } + + /** + * 设置留言内容 + * + * @param neirong 留言内容 + */ + public void setNeirong(String neirong) { + this.neirong = neirong; + } + + /** + * 获取留言所属用户信息 + * + * @return 用户对象(Tuser) + */ + public Tuser getUser() { + return user; + } + + /** + * 设置留言所属用户信息 + * + * @param user 用户对象(Tuser) + */ + public void setUser(Tuser user) { + this.user = user; + } + + /** + * 获取留言所属的用户ID + * + * @return 用户ID + */ + public String getUser_id() { + return user_id; + } + + /** + * 设置留言所属的用户ID + * + * @param user_id 用户ID + */ + public void setUser_id(String user_id) { + this.user_id = user_id; + } +} diff --git a/orm/Tcatelog.java b/orm/Tcatelog.java new file mode 100644 index 0000000..fc1f6c1 --- /dev/null +++ b/orm/Tcatelog.java @@ -0,0 +1,34 @@ +package com.itbaizhan.orm; + +public class Tcatelog //菜品类别类 +{ + private String id;//菜品类别ID + private String name;//菜品类别名称 + private String del;//菜品类别是否删除标志 + + public String getDel()//得到是否删除信息 + { + return del; + } + public void setDel(String del)//设置是否删除信息 + { + this.del = del; + } + public String getName()//得到菜品类别名信息 + { + return name; + } + public void setName(String name)//设置菜品类别名信息 + { + this.name = name; + } + public String getId()//得到菜品类别ID信息 + { + return id; + } + public void setId(String id)//设置菜品类别ID信息 + { + this.id = id; + } + +} diff --git a/orm/Tgoods.java b/orm/Tgoods.java new file mode 100644 index 0000000..6e0ce95 --- /dev/null +++ b/orm/Tgoods.java @@ -0,0 +1,104 @@ +package com.itbaizhan.orm; + +public class Tgoods { // 菜品信息类 + + private String id; // 菜品的ID + private String catelog_id; // 菜品类别的ID + private String bianhao; // 菜品的编号 + private String mingcheng; // 菜品的名称 + private String jieshao; // 菜品的介绍 + private String fujian; // 菜品的图片 + private int shichangjia; // 菜品的市场价 + private int tejia; // 菜品的特价 + private String del; // 菜品是否删除标志 + + // 获取菜品编号 + public String getBianhao() { + return bianhao; + } + + // 设置菜品编号 + public void setBianhao(String bianhao) { + this.bianhao = bianhao; + } + + // 获取菜品类别ID + public String getCatelog_id() { + return catelog_id; + } + + // 设置菜品类别ID + public void setCatelog_id(String catelog_id) { + this.catelog_id = catelog_id; + } + + // 获取菜品是否删除信息 + public String getDel() { + return del; + } + + // 设置菜品是否删除信息 + public void setDel(String del) { + this.del = del; + } + + // 获取菜品图片信息 + public String getFujian() { + return fujian; + } + + // 设置菜品图片信息 + public void setFujian(String fujian) { + this.fujian = fujian; + } + + // 获取菜品ID信息 + public String getId() { + return id; + } + + // 设置菜品ID信息 + public void setId(String id) { + this.id = id; + } + + // 获取菜品介绍信息 + public String getJieshao() { + return jieshao; + } + + // 设置菜品介绍信息 + public void setJieshao(String jieshao) { + this.jieshao = jieshao; + } + + // 获取菜品名称信息 + public String getMingcheng() { + return mingcheng; + } + + // 设置菜品名称信息 + public void setMingcheng(String mingcheng) { + this.mingcheng = mingcheng; + } + + // 获取菜品市场价信息 + public int getShichangjia() { + return shichangjia; + } + + // 设置菜品市场价信息 + public void setShichangjia(int shichangjia) { + this.shichangjia = shichangjia; + } + + // 获取菜品特价信息 + public int getTejia() { + return tejia; + } + + // 设置菜品特价信息 + public void setTejia(int tejia) { + this.tejia = tejia; + } +} diff --git a/orm/Torder.java b/orm/Torder.java new file mode 100644 index 0000000..d990cfb --- /dev/null +++ b/orm/Torder.java @@ -0,0 +1,186 @@ +package com.itbaizhan.orm; + +/** + * Torder - 订单实体类 + * + * 该类表示一个订单对象,包含订单的各种信息,如订单编号、下单时间、订单状态、用户信息、付款方式等。 + * 订单通常用于在线购物系统、餐饮服务系统等场景中,存储并管理与用户订单相关的各项数据。 + */ +public class Torder implements java.io.Serializable { + + private String id; // 订单ID,唯一标识每一个订单 + private String bianhao; // 订单编号,订单的唯一标识符(通常为系统自动生成) + private String shijian; // 下单时间,用户创建订单的时间 + private String zhuangtai; // 订单状态,例如:待支付、已支付、已发货、已完成、已取消等 + private String huifu; // 回复内容,可能用于管理员对订单的反馈或备注 + private String songhuodizhi; // 送货地址,用户填写的送货地址 + private String fukuanfangshi; // 付款方式,例如:信用卡、支付宝、现金等 + private int jine = 0; // 总金额,订单的总费用 + private String user_id; // 用户ID,表示该订单所属的用户 + + /** 默认构造函数 */ + public Torder() { + } + + /** + * 获取订单编号 + * + * @return 订单编号 + */ + public String getBianhao() { + return bianhao; + } + + /** + * 设置订单编号 + * + * @param bianhao 订单编号 + */ + public void setBianhao(String bianhao) { + this.bianhao = bianhao; + } + + /** + * 获取付款方式 + * + * @return 付款方式(如:支付宝、信用卡等) + */ + public String getFukuanfangshi() { + return fukuanfangshi; + } + + /** + * 设置付款方式 + * + * @param fukuanfangshi 付款方式(如:支付宝、信用卡等) + */ + public void setFukuanfangshi(String fukuanfangshi) { + this.fukuanfangshi = fukuanfangshi; + } + + /** + * 获取订单ID + * + * @return 订单ID + */ + public String getId() { + return id; + } + + /** + * 设置订单ID + * + * @param id 订单ID + */ + public void setId(String id) { + this.id = id; + } + + /** + * 获取订单的总金额 + * + * @return 订单总金额 + */ + public int getJine() { + return jine; + } + + /** + * 获取订单的回复内容(例如管理员的备注或处理结果) + * + * @return 回复内容 + */ + public String getHuifu() { + return huifu; + } + + /** + * 设置订单的回复内容 + * + * @param huifu 回复内容 + */ + public void setHuifu(String huifu) { + this.huifu = huifu; + } + + /** + * 设置订单的总金额 + * + * @param jine 订单总金额 + */ + public void setJine(int jine) { + this.jine = jine; + } + + /** + * 获取订单的下单时间 + * + * @return 订单下单时间(通常为日期时间字符串) + */ + public String getShijian() { + return shijian; + } + + /** + * 设置订单的下单时间 + * + * @param shijian 订单下单时间(通常为日期时间字符串) + */ + public void setShijian(String shijian) { + this.shijian = shijian; + } + + /** + * 获取订单的送货地址 + * + * @return 送货地址 + */ + public String getSonghuodizhi() { + return songhuodizhi; + } + + /** + * 设置订单的送货地址 + * + * @param songhuodizhi 送货地址 + */ + public void setSonghuodizhi(String songhuodizhi) { + this.songhuodizhi = songhuodizhi; + } + + /** + * 获取订单所属用户的ID + * + * @return 用户ID + */ + public String getUser_id() { + return user_id; + } + + /** + * 设置订单所属用户的ID + * + * @param user_id 用户ID + */ + public void setUser_id(String user_id) { + this.user_id = user_id; + } + + /** + * 获取订单的状态 + * + * @return 订单状态(例如:待支付、已支付、已发货等) + */ + public String getZhuangtai() { + return zhuangtai; + } + + /** + * 设置订单的状态 + * + * @param zhuangtai 订单状态(例如:待支付、已支付、已发货等) + */ + public void setZhuangtai(String zhuangtai) { + this.zhuangtai = zhuangtai; + } +} diff --git a/orm/TorderItem.java b/orm/TorderItem.java new file mode 100644 index 0000000..d450016 --- /dev/null +++ b/orm/TorderItem.java @@ -0,0 +1,107 @@ +package com.itbaizhan.orm; + +/** + * TorderItem - 订单明细实体类 + * + * 该类表示一个订单中的具体商品项,用于记录每个商品在订单中的明细信息,包括商品ID、商品数量、所属订单ID等。 + * 订单明细通常用于记录订单中包含的所有商品及其数量等信息,是订单和商品之间的关联。 + */ +public class TorderItem { + + private String id; // 订单明细ID,唯一标识每个订单明细项 + private String order_id; // 订单ID,表示该订单明细项所属的订单 + private String goods_id; // 商品ID,表示该明细项对应的商品 + private int goods_quantity; // 商品数量,表示该商品在该订单中的数量 + + private Tgoods goods; // 商品对象,关联商品详细信息(额外的字段) + + /** + * 获取商品数量 + * + * @return 商品数量 + */ + public int getGoods_quantity() { + return goods_quantity; + } + + /** + * 设置商品数量 + * + * @param goods_quantity 商品数量 + */ + public void setGoods_quantity(int goods_quantity) { + this.goods_quantity = goods_quantity; + } + + /** + * 获取商品ID + * + * @return 商品ID + */ + public String getGoods_id() { + return goods_id; + } + + /** + * 设置商品ID + * + * @param goods_id 商品ID + */ + public void setGoods_id(String goods_id) { + this.goods_id = goods_id; + } + + /** + * 获取订单明细ID + * + * @return 订单明细ID + */ + public String getId() { + return id; + } + + /** + * 设置订单明细ID + * + * @param id 订单明细ID + */ + public void setId(String id) { + this.id = id; + } + + /** + * 获取订单ID + * + * @return 订单ID + */ + public String getOrder_id() { + return order_id; + } + + /** + * 设置订单ID + * + * @param order_id 订单ID + */ + public void setOrder_id(String order_id) { + this.order_id = order_id; + } + + /** + * 获取商品对象(详细信息) + * + * @return 商品对象 + */ + public Tgoods getGoods() { + return goods; + } + + /** + * 设置商品对象(详细信息) + * + * @param goods 商品对象 + */ + public void setGoods(Tgoods goods) { + this.goods = goods; + } +} diff --git a/orm/Tuser.java b/orm/Tuser.java new file mode 100644 index 0000000..aa69beb --- /dev/null +++ b/orm/Tuser.java @@ -0,0 +1,106 @@ +package com.itbaizhan.orm; + +/** + * Tuser - 用户实体类 + * + * 该类表示系统中的用户信息,通常用于存储用户的基本信息,例如登录账号、密码、姓名等。 + * 该类的字段和方法主要用于用户的管理和身份验证。 + */ +public class Tuser { + + private String id; // 用户ID,唯一标识每个用户 + private String loginname; // 用户登录账号,用户用于登录系统的唯一账号 + private String loginpw; // 用户登录密码,用户登录系统时输入的密码 + private String name; // 用户姓名,用户的真实姓名或显示名 + private String del; // 是否删除标志,表示用户是否已被删除或禁用(逻辑删除) + + /** + * 获取用户ID + * + * @return 用户ID + */ + public String getId() { + return id; + } + + /** + * 设置用户ID + * + * @param id 用户ID + */ + public void setId(String id) { + this.id = id; + } + + /** + * 获取用户登录账号 + * + * @return 用户登录账号 + */ + public String getLoginname() { + return loginname; + } + + /** + * 设置用户登录账号 + * + * @param loginname 用户登录账号 + */ + public void setLoginname(String loginname) { + this.loginname = loginname; + } + + /** + * 获取用户登录密码 + * + * @return 用户登录密码 + */ + public String getLoginpw() { + return loginpw; + } + + /** + * 设置用户登录密码 + * + * @param loginpw 用户登录密码 + */ + public void setLoginpw(String loginpw) { + this.loginpw = loginpw; + } + + /** + * 获取用户是否删除标志 + * + * @return 是否删除标志 + */ + public String getDel() { + return del; + } + + /** + * 设置用户是否删除标志 + * + * @param del 是否删除标志 + */ + public void setDel(String del) { + this.del = del; + } + + /** + * 获取用户姓名 + * + * @return 用户姓名 + */ + public String getName() { + return name; + } + + /** + * 设置用户姓名 + * + * @param name 用户姓名 + */ + public void setName(String name) { + this.name = name; + } +} diff --git a/orm/Txinyong.java b/orm/Txinyong.java new file mode 100644 index 0000000..b743523 --- /dev/null +++ b/orm/Txinyong.java @@ -0,0 +1,105 @@ +package com.itbaizhan.orm; + +/** + * Txinyong - 信用评价实体类 + * + * 该类用于表示管理员对用户的信用评价。系统中,管理员可以根据用户的行为或表现给用户进行信用评分或评价。该类包括了评价的基本信息,如评价ID、评价属性、评价内容、评价时间以及用户ID等。 + */ +public class Txinyong { + + private String id; // 评价ID,唯一标识每条评价 + private String shuxing; // 评价属性,管理员根据不同的标准对用户进行评价的属性(如信用、表现等) + private String neirong; // 评价内容,具体的评价文字或描述 + private String shijian; // 评价时间,管理员进行评价的时间 + private String user_id; // 用户ID,标识被评价的用户 + + /** + * 获取评价ID + * + * @return 评价ID + */ + public String getId() { + return id; + } + + /** + * 设置评价ID + * + * @param id 评价ID + */ + public void setId(String id) { + this.id = id; + } + + /** + * 获取评价属性 + * + * @return 评价属性 + */ + public String getShuxing() { + return shuxing; + } + + /** + * 设置评价属性 + * + * @param shuxing 评价属性 + */ + public void setShuxing(String shuxing) { + this.shuxing = shuxing; + } + + /** + * 获取评价内容 + * + * @return 评价内容 + */ + public String getNeirong() { + return neirong; + } + + /** + * 设置评价内容 + * + * @param neirong 评价内容 + */ + public void setNeirong(String neirong) { + this.neirong = neirong; + } + + /** + * 获取评价时间 + * + * @return 评价时间 + */ + public String getShijian() { + return shijian; + } + + /** + * 设置评价时间 + * + * @param shijian 评价时间 + */ + public void setShijian(String shijian) { + this.shijian = shijian; + } + + /** + * 获取用户ID + * + * @return 用户ID + */ + public String getUser_id() { + return user_id; + } + + /** + * 设置用户ID + * + * @param user_id 用户ID + */ + public void setUser_id(String user_id) { + this.user_id = user_id; + } +} diff --git a/service/cartService.java b/service/cartService.java new file mode 100644 index 0000000..3c1d666 --- /dev/null +++ b/service/cartService.java @@ -0,0 +1,88 @@ +package com.itbaizhan.service; + +import javax.servlet.http.HttpSession; +import org.directwebremoting.WebContext; +import org.directwebremoting.WebContextFactory; +import com.itbaizhan.util.Cart; + +/** + * 购物车服务类 (cartService) + * + * 该类提供了对购物车的操作方法,包括修改商品数量、删除购物车中的商品以及清空购物车等功能。 + * 它通过使用 session 来保存和管理用户的购物车信息。 + */ +public class cartService { + + /** + * 修改购物车中商品的数量 + * + * @param goodsId 商品ID + * @param quantity 新的商品数量 + * @return 操作结果的字符串 ("yes" 表示成功) + */ + public String modiNum(String goodsId, int quantity) { + String result = ""; // 初始化操作结果为空 + + // 获取 WebContext 上下文 + WebContext ctx = WebContextFactory.get(); // 通过 DWR (Direct Web Remoting) 获取 WebContext + HttpSession session = ctx.getSession(); // 获取当前会话对象 + + // 获取购物车对象 + Cart cart = (Cart) session.getAttribute("cart"); + + // 更新购物车中的商品数量 + cart.updateCart(goodsId, quantity); + + // 更新 session 中的购物车对象 + session.setAttribute("cart", cart); + + // 设置操作结果为 "yes" 表示成功 + result = "yes"; + return result; + } + + /** + * 从购物车中删除指定商品 + * + * @param goodsId 商品ID + * @return 操作结果的字符串 ("yes" 表示成功) + */ + public String delGoodsFromCart(String goodsId) { + // 获取 WebContext 上下文 + WebContext ctx = WebContextFactory.get(); // 通过 DWR 获取 WebContext + HttpSession session = ctx.getSession(); // 获取当前会话对象 + + // 获取购物车对象 + Cart cart = (Cart) session.getAttribute("cart"); + + // 从购物车中删除指定商品 + cart.delGoods(goodsId); + + // 更新 session 中的购物车对象 + session.setAttribute("cart", cart); + + return "yes"; // 返回成功标志 + } + + /** + * 清空购物车中的所有商品 + * + * @return 操作结果的字符串 ("yes" 表示成功) + */ + public String clearCart() { + // 获取 WebContext 上下文 + WebContext ctx = WebContextFactory.get(); // 通过 DWR 获取 WebContext + HttpSession session = ctx.getSession(); // 获取当前会话对象 + + // 获取购物车对象 + Cart cart = (Cart) session.getAttribute("cart"); + + // 清空购物车中的所有商品 + cart.getItems().clear(); + + // 更新 session 中的购物车对象 + session.setAttribute("cart", cart); + + return "yes"; // 返回成功标志 + } +} diff --git a/service/liuService.java b/service/liuService.java new file mode 100644 index 0000000..fbe817a --- /dev/null +++ b/service/liuService.java @@ -0,0 +1,344 @@ +package com.itbaizhan.service; + +import java.sql.ResultSet; +import java.util.ArrayList; +import java.util.List; + +import com.itbaizhan.dao.DB; +import com.itbaizhan.orm.Tcatelog; +import com.itbaizhan.orm.Tgoods; +import com.itbaizhan.orm.Torder; +import com.itbaizhan.orm.TorderItem; +import com.itbaizhan.orm.Txinyong; + +/** + * 服务类:liuService + * + * 该类提供了多个与商品、订单、用户等相关的业务逻辑功能。它包含了查询商品、保存订单、更新库存、处理用户登录等功能。 + */ +public class liuService { + + /** + * 获取菜品种类的列表,返回菜品类别的 ID 和名称 + * + * @return 返回菜品种类的 List,包含每个菜品的 ID 和名称 + */ + public static List catelogList() { + List catelogList = new ArrayList(); // 初始化菜品种类列表 + String sql = "select * from t_catelog where del='no'"; // 查询未被删除的菜品种类 + Object[] params = {}; // 设置查询参数为空 + DB mydb = new DB(); + + try { + mydb.doPstm(sql, params); // 执行 SQL 查询 + ResultSet rs = mydb.getRs(); // 获取查询结果集 + while (rs.next()) { // 遍历结果集 + Tcatelog catelog = new Tcatelog(); // 创建 Tcatelog 对象 + catelog.setId(rs.getString("id")); // 设置菜品类别 ID + catelog.setName(rs.getString("name")); // 设置菜品类别名称 + catelogList.add(catelog); // 将菜品类别添加到列表 + } + rs.close(); // 关闭结果集 + } catch (Exception e) { + e.printStackTrace(); + } + mydb.closed(); // 关闭数据库连接 + return catelogList; // 返回菜品类别列表 + } + + /** + * 获取商品详细信息 + * + * @param id 商品 ID + * @return 返回商品详细信息的 Tgoods 对象 + */ + public static Tgoods getGoods(String id) { + Tgoods goods = new Tgoods(); // 初始化商品对象 + String sql = "select * from t_goods where id=?"; // 查询指定商品的 SQL 语句 + Object[] params = { id }; // 设置查询参数为商品 ID + DB mydb = new DB(); + + try { + mydb.doPstm(sql, params); // 执行查询 + ResultSet rs = mydb.getRs(); // 获取查询结果集 + rs.next(); // 移动到第一行(只查询一条记录) + + // 设置商品属性 + goods.setId(rs.getString("id")); + goods.setCatelog_id(rs.getString("catelog_id")); + goods.setBianhao(rs.getString("bianhao")); + goods.setMingcheng(rs.getString("mingcheng")); + goods.setJieshao(rs.getString("jieshao")); + goods.setFujian(rs.getString("fujian")); + goods.setShichangjia(rs.getInt("shichangjia")); + goods.setTejia(rs.getInt("tejia")); + goods.setDel(rs.getString("del")); + + rs.close(); // 关闭结果集 + } catch (Exception e) { + e.printStackTrace(); + } + mydb.closed(); // 关闭数据库连接 + return goods; // 返回商品对象 + } + + /** + * 获取最新商品的信息(按商品 ID 排序,最多返回前 8 个商品) + * + * @return 返回最新商品列表 + */ + public static List goodsNew() { + List goodsList = new ArrayList(); // 初始化商品列表 + String sql = "select * from t_goods where del='no' order by id desc"; // 查询未删除的商品,按 ID 降序排列 + Object[] params = {}; // 设置查询参数为空 + DB mydb = new DB(); + + try { + mydb.doPstm(sql, params); // 执行查询 + ResultSet rs = mydb.getRs(); // 获取查询结果集 + while (rs.next()) { // 遍历结果集 + Tgoods goods = new Tgoods(); // 创建 Tgoods 对象 + + // 设置商品属性 + goods.setId(rs.getString("id")); + goods.setCatelog_id(rs.getString("catelog_id")); + goods.setBianhao(rs.getString("bianhao")); + goods.setMingcheng(rs.getString("mingcheng")); + goods.setJieshao(rs.getString("jieshao")); + goods.setFujian(rs.getString("fujian")); + goods.setShichangjia(rs.getInt("shichangjia")); + goods.setTejia(rs.getInt("tejia")); + goods.setDel(rs.getString("del")); + + goodsList.add(goods); // 将商品添加到列表 + } + rs.close(); // 关闭结果集 + } catch (Exception e) { + e.printStackTrace(); + } + mydb.closed(); // 关闭数据库连接 + + // 限制返回最多 8 个商品 + if (goodsList.size() > 8) { + goodsList = goodsList.subList(0, 8); + } + return goodsList; // 返回最新商品列表 + } + + /** + * 根据菜品类别 ID 获取该类别下的商品列表 + * + * @param catelog_id 菜品类别 ID + * @return 返回该类别下的商品列表 + */ + public static List goodsByCatelog(String catelog_id) { + List goodsList = new ArrayList(); // 初始化商品列表 + String sql = "select * from t_goods where del='no' and catelog_id=? order by id desc"; // 根据类别 ID 查询商品 + Object[] params = { catelog_id }; // 设置查询参数为菜品类别 ID + DB mydb = new DB(); + + try { + mydb.doPstm(sql, params); // 执行查询 + ResultSet rs = mydb.getRs(); // 获取查询结果集 + while (rs.next()) { // 遍历结果集 + Tgoods goods = new Tgoods(); // 创建 Tgoods 对象 + + // 设置商品属性 + goods.setId(rs.getString("id")); + goods.setCatelog_id(rs.getString("catelog_id")); + goods.setBianhao(rs.getString("bianhao")); + goods.setMingcheng(rs.getString("mingcheng")); + goods.setJieshao(rs.getString("jieshao")); + goods.setFujian(rs.getString("fujian")); + goods.setShichangjia(rs.getInt("shichangjia")); + goods.setTejia(rs.getInt("tejia")); + goods.setDel(rs.getString("del")); + + goodsList.add(goods); // 将商品添加到列表 + } + rs.close(); // 关闭结果集 + } catch (Exception e) { + e.printStackTrace(); + } + mydb.closed(); // 关闭数据库连接 + return goodsList; // 返回商品列表 + } + + /** + * 保存订单信息 + * + * @param order 订单对象,包含订单的各项信息 + */ + public static void saveOrder(Torder order) { + String sql = "insert into t_order(id,bianhao,shijian,zhuangtai,huifu,songhuodizhi,fukuanfangshi,jine,user_id) values(?,?,?,?,?,?,?,?,?)"; + Object[] params = { order.getId(), order.getBianhao(), order.getShijian(), order.getZhuangtai(), + order.getHuifu(), order.getSonghuodizhi(), order.getFukuanfangshi(), order.getJine(), order.getUser_id() }; + DB mydb = new DB(); + mydb.doPstm(sql, params); // 执行插入操作 + mydb.closed(); // 关闭数据库连接 + } + + /** + * 保存订单商品明细 + * + * @param id 订单明细 ID + * @param order_id 订单 ID + * @param goods_id 商品 ID + * @param goods_quantity 商品数量 + */ + public static void saveOrderItem(String id, String order_id, String goods_id, int goods_quantity) { + String sql = "insert into t_orderitem(id,order_id,goods_id,goods_quantity) values(?,?,?,?)"; + Object[] params = { id, order_id, goods_id, goods_quantity }; + DB mydb = new DB(); + mydb.doPstm(sql, params); // 执行插入操作 + mydb.closed(); // 关闭数据库连接 + } + + /** + * 更新商品库存 + * + * @param goods_id 商品 ID + * @param goods_quantity 商品数量 + */ + public static void updateGoodsKucun(String goods_id, int goods_quantity) { + String sql = "update t_goods set kucun=kucun-? where id=?"; + Object[] params = { goods_quantity, goods_id }; + DB mydb = new DB(); + mydb.doPstm(sql, params); // 执行更新操作 + mydb.closed(); // 关闭数据库连接 + } + + /** + * 获取用户的订单列表 + * + * @param user_id 用户 ID + * @return 返回该用户的订单列表 + */ + public static List orderList(String user_id) { + List orderList = new ArrayList(); // 初始化订单列表 + String sql = "select * from t_order where user_id=?"; // 查询该用户的所有订单 + Object[] params = { user_id }; // 设置查询参数为用户 ID + DB mydb = new DB(); + + try { + mydb.doPstm(sql, params); // 执行查询 + ResultSet rs = mydb.getRs(); // 获取查询结果集 + while (rs.next()) { // 遍历结果集 + Torder order = new Torder(); // 创建 Torder 对象 + + // 设置订单属性 + order.setId(rs.getString("id")); + order.setBianhao(rs.getString("bianhao")); + order.setShijian(rs.getString("shijian")); + order.setZhuangtai(rs.getString("zhuangtai")); + order.setHuifu(rs.getString("huifu")); + order.setSonghuodizhi(rs.getString("songhuodizhi")); + order.setFukuanfangshi(rs.getString("fukuanfangshi")); + order.setJine(rs.getInt("jine")); + order.setUser_id(rs.getString("user_id")); + + orderList.add(order); // 将订单添加到列表 + } + rs.close(); // 关闭结果集 + } catch (Exception e) { + e.printStackTrace(); + } + mydb.closed(); // 关闭数据库连接 + return orderList; // 返回订单列表 + } + + /** + * 获取订单商品的详细信息列表 + * + * @param order_id 订单 ID + * @return 返回订单商品的列表,包含商品信息和数量 + */ + public static List orderItemList(String order_id) { + List orderitemList = new ArrayList(); // 初始化订单商品列表 + String sql = "select * from t_orderitem where order_id=?"; // 查询订单中包含的商品 + Object[] params = { order_id }; // 设置查询参数为订单 ID + DB mydb = new DB(); + + try { + mydb.doPstm(sql, params); // 执行查询 + ResultSet rs = mydb.getRs(); // 获取查询结果集 + while (rs.next()) { // 遍历结果集 + TorderItem orderItem = new TorderItem(); // 创建 TorderItem 对象 + + // 设置订单商品属性 + orderItem.setId(rs.getString("id")); + orderItem.setGoods(getGoods(rs.getString("goods_id"))); // 获取商品信息 + orderItem.setGoods_quantity(rs.getInt("goods_quantity")); // 设置商品数量 + + orderitemList.add(orderItem); // 将订单商品添加到列表 + } + rs.close(); // 关闭结果集 + } catch (Exception e) { + e.printStackTrace(); + } + mydb.closed(); // 关闭数据库连接 + return orderitemList; // 返回订单商品列表 + } + + /** + * 判断用户的账号是否存在 + * + * @param loginname 用户登录账号 + * @return 如果账号存在,返回 "yizhan",否则返回 "meizhan" + */ + public static String panduan_zhanghao(String loginname) { + String s = "meizhan"; // 默认返回“没占用” + + String sql = "select * from t_user where del='no' and loginname=?"; // 查询账号是否存在 + Object[] params = { loginname.trim() }; // 设置查询参数为账号 + DB mydb = new DB(); + + try { + mydb.doPstm(sql, params); // 执行查询 + ResultSet rs = mydb.getRs(); // 获取查询结果集 + while (rs.next()) { // 如果查询到结果,表示账号已存在 + s = "yizhan"; // 账号已占用 + } + rs.close(); // 关闭结果集 + } catch (Exception e) { + e.printStackTrace(); + } + mydb.closed(); // 关闭数据库连接 + return s; // 返回账号是否已占用 + } + + /** + * 获取用户的信用信息列表 + * + * @param user_id 用户 ID + * @return 返回该用户的信用信息列表 + */ + public static List getxinyongList(String user_id) { + List xinyongList = new ArrayList(); // 初始化信用信息列表 + String sql = "select * from t_xinyong where user_id=?"; // 查询该用户的信用信息 + Object[] params = { user_id }; // 设置查询参数为用户 ID + DB mydb = new DB(); + + try { + mydb.doPstm(sql, params); // 执行查询 + ResultSet rs = mydb.getRs(); // 获取查询结果集 + while (rs.next()) { // 遍历结果集 + Txinyong xinyong = new Txinyong(); // 创建 Txinyong 对象 + + // 设置信用信息属性 + xinyong.setId(rs.getString("id")); + xinyong.setShuxing(rs.getString("shuxing")); + xinyong.setNeirong(rs.getString("neirong")); + xinyong.setShijian(rs.getString("shijian")); + xinyong.setUser_id(rs.getString("user_id")); + + xinyongList.add(xinyong); // 将信用信息添加到列表 + } + rs.close(); // 关闭结果集 + } catch (Exception e) { + e.printStackTrace(); + } + mydb.closed(); // 关闭数据库连接 + return xinyongList; // 返回信用信息列表 + } +} diff --git a/service/loginService.java b/service/loginService.java new file mode 100644 index 0000000..72aeb9e --- /dev/null +++ b/service/loginService.java @@ -0,0 +1,166 @@ +package com.itbaizhan.service; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +import javax.servlet.http.HttpSession; + +import org.directwebremoting.WebContext; +import org.directwebremoting.WebContextFactory; + +import com.itbaizhan.dao.DB; +import com.itbaizhan.orm.TAdmin; +import com.itbaizhan.orm.Tcatelog; +import com.itbaizhan.orm.Tuser; +import com.itbaizhan.util.Cart; + +public class loginService { + + /** + * 用户登录方法 + * 根据用户类型判断登录的身份,并验证账号密码。 + * 登录成功后,将用户信息存入 session 中。 + * + * @param userName 用户名 + * @param userPw 密码 + * @param userType 用户类型(0:管理员,1:会员,2:其他) + * @return 登录结果,"yes" 表示登录成功,"no" 表示登录失败 + */ + public String login(String userName, String userPw, int userType) { + String result = "no"; // 默认登录失败 + + if (userType == 0) { // 系统管理员登录 + String sql = "select * from t_admin where userName=? and userPw=?"; + Object[] params = { userName, userPw }; + DB mydb = new DB(); + mydb.doPstm(sql, params); + try { + ResultSet rs = mydb.getRs(); // 获取查询结果集 + boolean mark = (rs == null || !rs.next() ? false : true); // 判断查询结果是否为空 + if (!mark) { + result = "no"; // 登录失败 + } else { + result = "yes"; // 登录成功 + TAdmin admin = new TAdmin(); + admin.setUserId(rs.getInt("userId")); + admin.setUserName(rs.getString("userName")); + admin.setUserPw(rs.getString("userPw")); + + WebContext ctx = WebContextFactory.get(); // 获取 WebContext 对象 + HttpSession session = ctx.getSession(); + session.setAttribute("userType", 0); // 设置用户类型为管理员 + session.setAttribute("admin", admin); // 将管理员信息存入 session + } + rs.close(); + } catch (SQLException e) { + System.out.println("登录失败!"); + e.printStackTrace(); + } finally { + mydb.closed(); + } + } + + if (userType == 1) { // 会员登录 + String sql = "select * from t_user where loginname=? and loginpw=? and del='no'"; + Object[] params = { userName, userPw }; + DB mydb = new DB(); + try { + mydb.doPstm(sql, params); // 执行 SQL 查询 + ResultSet rs = mydb.getRs(); // 获取查询结果集 + boolean mark = (rs == null || !rs.next() ? false : true); // 判断查询结果是否为空 + if (!mark) { + result = "no"; // 登录失败 + } else { + result = "yes"; // 登录成功 + Tuser user = new Tuser(); + user.setId(rs.getString("id")); + user.setLoginname(rs.getString("loginname")); + user.setLoginpw(rs.getString("loginpw")); + user.setName(rs.getString("name")); + user.setDel(rs.getString("del")); + + WebContext ctx = WebContextFactory.get(); // 获取 WebContext 对象 + HttpSession session = ctx.getSession(); + session.setAttribute("userType", 1); // 设置用户类型为会员 + session.setAttribute("user", user); // 将用户信息存入 session + + // 创建一个空的购物车对象,存入 session + Cart cart = new Cart(); + session.setAttribute("cart", cart); + } + rs.close(); + } catch (Exception e) { + e.printStackTrace(); + } + mydb.closed(); + } + + if (userType == 2) { + // 用户类型为 2 的登录逻辑可以在这里添加(暂未实现) + } + return result; // 返回登录结果 + } + + /** + * 修改管理员密码 + * 管理员修改密码功能。 + * + * @param userPwNew 新密码 + * @return 修改结果,"yes" 表示修改成功 + */ + public String adminPwEdit(String userPwNew) { + System.out.println("DDDD"); + try { + Thread.sleep(700); // 确保线程运行顺序 + } catch (InterruptedException e) { + e.printStackTrace(); + } + + WebContext ctx = WebContextFactory.get(); // 获取 WebContext 对象 + HttpSession session = ctx.getSession(); + TAdmin admin = (TAdmin) session.getAttribute("admin"); // 获取当前登录的管理员对象 + + String sql = "update t_admin set userPw=? where userId=?"; + Object[] params = { userPwNew, admin.getUserId() }; // 设置更新的参数 + DB mydb = new DB(); + mydb.doPstm(sql, params); // 执行更新操作 + + return "yes"; // 返回修改成功的结果 + } + + /** + * 获取所有菜品类别 + * 查询所有未删除的菜品类别并返回结果。 + * + * @return 菜品类别列表 + */ + public List catelogAll() { + try { + Thread.sleep(700); // 确保线程运行顺序 + } catch (InterruptedException e) { + e.printStackTrace(); + } + + List catelogList = new ArrayList(); // 初始化菜品类别列表 + String sql = "select * from t_catelog where del='no'"; // 查询未删除的菜品类别 + Object[] params = {}; + DB mydb = new DB(); + try { + mydb.doPstm(sql, params); // 执行查询 + ResultSet rs = mydb.getRs(); // 获取查询结果集 + while (rs.next()) { // 遍历结果集 + Tcatelog catelog = new Tcatelog(); + catelog.setId(rs.getString("id")); // 设置菜品类别 ID + catelog.setName(rs.getString("name")); // 设置菜品类别名称 + catelogList.add(catelog); // 将菜品类别添加到列表 + } + rs.close(); + } catch (Exception e) { + e.printStackTrace(); + } + mydb.closed(); // 关闭数据库连接 + return catelogList; // 返回菜品类别列表 + } +} diff --git a/site/cart/mycart.jsp b/site/cart/mycart.jsp deleted file mode 100644 index 2438053..0000000 --- a/site/cart/mycart.jsp +++ /dev/null @@ -1,157 +0,0 @@ -<%@ page language="java" pageEncoding="UTF-8"%> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> -<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> -<%@ page isELIgnored="false" %> -<% -String path = request.getContextPath(); -%> - - - - - - - - - - - - - - - - - - - - -
- -
- - - - - -
-
- -
-
-

鎴戠殑璐墿杞

-
- - - - - - - - - - - - - - - - - - - - - - -
鍟嗗搧鍚嶇О璐拱浠锋牸璐拱鏁伴噺鎬婚噾棰鎿嶄綔
${item.value.goods.mingcheng}锟:${item.value.goods.tejia}${item.value.goods.tejia * item.value.goods_quantity} - -
-
- 鎬婚噾棰濓細${sessionScope.cart.totalPrice} -      - -
- - - - - - - - -
- - - - - -
-
-
-
- - - - -
 
-
-
- - -
- - diff --git a/site/default.jsp b/site/default.jsp deleted file mode 100644 index 97835ab..0000000 --- a/site/default.jsp +++ /dev/null @@ -1,23 +0,0 @@ -<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> -<% -String path = request.getContextPath(); -String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; -%> - - - - - - - - - - - - - - - diff --git a/site/goods/goodsByCatelog.jsp b/site/goods/goodsByCatelog.jsp deleted file mode 100644 index 543ad48..0000000 --- a/site/goods/goodsByCatelog.jsp +++ /dev/null @@ -1,93 +0,0 @@ -<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> -<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> -<%@ page isELIgnored="false" %> -<% -String path = request.getContextPath(); -%> - - - - - - - - - - - - - - - - -
- -
- - - - - -
-
- -
-
-

鑿滃搧淇℃伅

-
- - - - - - - - - -
- - - - -
-

- - -

${goods.mingcheng }
-

-
-
-
-
-
- - - - - -
 
-
-
- - -
- - diff --git a/site/goods/goodsDetailQian.jsp b/site/goods/goodsDetailQian.jsp deleted file mode 100644 index e301c0c..0000000 --- a/site/goods/goodsDetailQian.jsp +++ /dev/null @@ -1,110 +0,0 @@ -<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> -<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> -<%@ page isELIgnored="false" %> -<% -String path = request.getContextPath(); -%> - - - - - - - - - - - - - - - - -
- -
- - - - - -
-
- -
-
-

鑿滃搧璇︾粏淇℃伅

-
-
- - - - - - - - - - - - - - - - - - - -
鍟嗗搧缂栧彿锛${requestScope.goods.bianhao }
鍟嗗搧鍚嶇О锛${requestScope.goods.mingcheng }
鍟嗗搧鎻忚堪锛
浠锋牸锛${requestScope.goods.shichangjia }
- 鏁伴噺锛 - - - -
-
-
-
-
- - - - -
 
-
-
- - -
- - diff --git a/site/goods/goodsNew.jsp b/site/goods/goodsNew.jsp deleted file mode 100644 index caac8d0..0000000 --- a/site/goods/goodsNew.jsp +++ /dev/null @@ -1,93 +0,0 @@ -<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> -<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> -<%@ page isELIgnored="false" %> -<% -String path = request.getContextPath(); -%> - - - - - - - - - - - - - - - - -
- -
- - - - - -
-
- -
-
-

鑿滃搧淇℃伅

-
- - - - - - - - - -
- - - - -
-

- - -

${goods.mingcheng }
-

-
-
-
-
-
- - - - - -
 
-
-
- - -
- - diff --git a/site/goods/goodsRes.jsp b/site/goods/goodsRes.jsp deleted file mode 100644 index 78a7944..0000000 --- a/site/goods/goodsRes.jsp +++ /dev/null @@ -1,92 +0,0 @@ -<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> -<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> -<%@ page isELIgnored="false" %> -<% -String path = request.getContextPath(); -%> - - - - - - - - - - - - - - - - -
- -
- - - - - -
-
- -
-
-

鑿滃搧淇℃伅

-
- - - - - - - - - -
- - - - -
-

- - -

${goods.mingcheng }
-

-
-
-
-
-
- - - - -
 
-
-
- - -
- - diff --git a/site/goods/goodsSea.jsp b/site/goods/goodsSea.jsp deleted file mode 100644 index 9ce52f6..0000000 --- a/site/goods/goodsSea.jsp +++ /dev/null @@ -1,90 +0,0 @@ -<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> -<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> -<%@ page isELIgnored="false" %> -<% -String path = request.getContextPath(); -%> - - - - - - - - - - - - - - - - -
- -
- - - - - -
-
- -
-
- -
-
- - - - - - - - - -
- 鑿滃搧鍚嶇О锛 - - - -
-   -   -
-
-
-
-
- - - - -
 
-
-
- - -
- - diff --git a/site/inc/daohang.jsp b/site/inc/daohang.jsp deleted file mode 100644 index 4710547..0000000 --- a/site/inc/daohang.jsp +++ /dev/null @@ -1,81 +0,0 @@ -<%@ page language="java" pageEncoding="UTF-8"%> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> -<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> -<%@ page isELIgnored="false" %> -<% -String path = request.getContextPath(); -%> - - - - - - - - - - - - - - - - - - - - - diff --git a/site/inc/left.jsp b/site/inc/left.jsp deleted file mode 100644 index 640fb46..0000000 --- a/site/inc/left.jsp +++ /dev/null @@ -1,47 +0,0 @@ -<%@ page language="java" pageEncoding="UTF-8"%> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> -<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> -<%@ page isELIgnored="false" %> - -<% -String path = request.getContextPath(); -%> - - - - - - - - - - - - - - - - - - diff --git a/site/index.jsp b/site/index.jsp deleted file mode 100644 index 8c0eae3..0000000 --- a/site/index.jsp +++ /dev/null @@ -1,72 +0,0 @@ -<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> -<% -String path = request.getContextPath(); -%> - - - - - - - - - - - - - - - - - -
- -
- - - - - -
-
- -
-
-

1111

-
-

Sed lacus. Donec lectus. Nullam prum. Proin imperdiet est. Phasellus dapibus semper urna. Pellentesque ornare,

- -
-
-
- - - - -
 
-
-
- - -
- - diff --git a/site/liuyan/liuyanAdd.jsp b/site/liuyan/liuyanAdd.jsp deleted file mode 100644 index 239ce5b..0000000 --- a/site/liuyan/liuyanAdd.jsp +++ /dev/null @@ -1,60 +0,0 @@ -<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> -<%@ page isELIgnored="false" %> - -<% -String path = request.getContextPath(); -%> - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - -
 
- 淇℃伅鍐呭锛 - - -
-   - -   -   -
-
- - diff --git a/site/liuyan/liuyanAll.jsp b/site/liuyan/liuyanAll.jsp deleted file mode 100644 index 36e603a..0000000 --- a/site/liuyan/liuyanAll.jsp +++ /dev/null @@ -1,108 +0,0 @@ -<%@ page language="java" pageEncoding="UTF-8"%> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> -<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> -<%@ page isELIgnored="false" %> -<% -String path = request.getContextPath(); -%> - - - - - - - - - - - - - - - - - - -
- -
- - - - - -
-
- -
-
-

  鐣欒█鏉挎ā鍧

-
- -
-
-     - - ${liuyan.neirong} -
-
${liuyan.liuyanshi}
-
-
-
-
-
- 鎴戣鐣欒█ -
-
-
-
- - - - -
 
-
-
- - -
- - diff --git a/site/liuyan/liuyanDetail.jsp b/site/liuyan/liuyanDetail.jsp deleted file mode 100644 index 36fb9ef..0000000 --- a/site/liuyan/liuyanDetail.jsp +++ /dev/null @@ -1,66 +0,0 @@ -<%@ page language="java" pageEncoding="UTF-8"%> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> -<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> -<%@ page isELIgnored="false" %> - -<% -String path = request.getContextPath(); -%> - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - -
 
- 淇℃伅鍐呭锛 - - ${requestScope.liuyan.neirong } -
- 鍙戝竷鏃堕棿锛 - - ${requestScope.liuyan.liuyanshi } -
- 鍥炲鍐呭锛 - - ${requestScope.liuyan.huifu } -
- 鍥炲鍐呭锛 - - ${requestScope.liuyan.huifushi } -
-
- - diff --git a/site/order/myorder.jsp b/site/order/myorder.jsp deleted file mode 100644 index 535a196..0000000 --- a/site/order/myorder.jsp +++ /dev/null @@ -1,113 +0,0 @@ -<%@ page language="java" pageEncoding="UTF-8"%> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> -<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> -<%@ page isELIgnored="false" %> -<% -String path = request.getContextPath(); -%> - - - - - - - - - - - - - - - - -
- -
- - - - - -
-
- -
-
-

鎴戠殑璁㈠崟

-
- -
- - - - - - - - - - - - - - - - - - - - - - -
璁㈠崟缂栧彿锛${order.bianhao}
涓嬪崟鏃堕棿锛${order.shijian}
- 璁㈠崟鐘舵侊細 - - 鏈彈鐞 - - - 宸插彈鐞 - -
鎺掗槦璁℃椂锛${order.huifu}
閫佽揣鍦板潃锛${order.songhuodizhi}
浠樻鏂瑰紡锛${order.fukuanfangshi}
鎬婚噾棰濓細${order.jine}  - 璁㈠崟鏄庣粏 -
-
-
-
-
-
-
- - - - -
 
-
-
- - -
- - diff --git a/site/order/orderDetail.jsp b/site/order/orderDetail.jsp deleted file mode 100644 index 8b19261..0000000 --- a/site/order/orderDetail.jsp +++ /dev/null @@ -1,180 +0,0 @@ -<%@ page language="java" pageEncoding="UTF-8"%> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> -<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> -<%@ page isELIgnored="false" %> -<% -String path = request.getContextPath(); -String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; -%> - - - - - - My JSP 'orderDetail.jsp' starting page - - - - - - - - - - - - - - - - - - - - - - - - -
鍟嗗搧鍚嶇О璐拱鏁伴噺璐拱浠锋牸
${orderItem.goods.mingcheng}${orderItem.goods_quantity}${orderItem.goods.tejia}
- - diff --git a/site/order/orderQueren.jsp b/site/order/orderQueren.jsp deleted file mode 100644 index b7a446b..0000000 --- a/site/order/orderQueren.jsp +++ /dev/null @@ -1,123 +0,0 @@ -<%@ page language="java" pageEncoding="UTF-8"%> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> -<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> -<%@ page isELIgnored="false" %> -<% -String path = request.getContextPath(); -%> - - - - - - - - - - - - - - - - -
- -
- - - - - -
-
- -
-
-

濉啓璁㈠崟

-
-
- - - - - - - - - - - - - - - - - -
- 鏀惰揣浜哄笎鍙凤細 - - -
- 鏀惰揣浜哄鍚嶏細 - - -
- 閫佽揣鍦板潃锛 - - -
- 浠樻鏂瑰紡锛 - - -
- - - - - - - -
- - - -
-
-
-
-
- - - - -
 
-
-
- - -
- - diff --git a/site/order/orderSubmit.jsp b/site/order/orderSubmit.jsp deleted file mode 100644 index 90cd248..0000000 --- a/site/order/orderSubmit.jsp +++ /dev/null @@ -1,94 +0,0 @@ -<%@ page language="java" pageEncoding="UTF-8"%> -<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> -<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> -<%@ page isELIgnored="false" %> -<% -String path = request.getContextPath(); -%> - - - - - - - - - - - - - - - - -
- -
- - - - - -
-
- -
-
-

-
- - - - - - - - - - - - - - - - - - - - -
鎭枩鎮紝璁㈠崟鎻愪氦鎴愬姛锛
璁㈠崟缂栧彿锛${requestScope.order.bianhao }
鎬婚噾棰濓細${requestScope.order.jine }
涓嬪崟鏃ユ湡:${requestScope.order.shijian }
閫佽揣鍦板潃:${requestScope.order.songhuodizhi }
浠樻鏂瑰紡:${requestScope.order.fukuanfangshi }
-
-
-
- - - - -
 
-
-
- - -
- - diff --git a/site/userlogin/userlogin.jsp b/site/userlogin/userlogin.jsp deleted file mode 100644 index a965fac..0000000 --- a/site/userlogin/userlogin.jsp +++ /dev/null @@ -1,84 +0,0 @@ -<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> -<% -String path = request.getContextPath(); -String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; -%> - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - -
璐﹀彿锛
瀵嗙爜锛
  - -   - - -
-
- - diff --git a/site/userreg/userreg.jsp b/site/userreg/userreg.jsp deleted file mode 100644 index 98753b4..0000000 --- a/site/userreg/userreg.jsp +++ /dev/null @@ -1,122 +0,0 @@ -<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> -<% -String path = request.getContextPath(); -%> - - - - - - - - - - - - - - - - -
- -
- - - - - -
-
- -
-
-

  浼氬憳娉ㄥ唽

-
-
- - - - - - - - - - - - - - - - - -
- 璐﹀彿锛 - -   - -
- 瀵嗙爜锛 - -   - -
- 濮撳悕锛 - -   - -
-   - -   - - -
-
-
-
-
- - - - -
 
-
-
- - -
- - diff --git a/updown/updown.jsp b/updown/updown.jsp deleted file mode 100644 index 17aaf14..0000000 --- a/updown/updown.jsp +++ /dev/null @@ -1,49 +0,0 @@ -<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> -<%@ page import="com.jspsmart.upload.*" %> -<% -String path = request.getContextPath(); -%> - - - - - - - - - - - - - <% - try - { - String fujianPath=request.getParameter("fujianPath");//鑾峰緱鍥剧墖璺緞 - String fujianYuashiMing=request.getParameter("fujianYuashiMing");//鑾峰緱鍥剧墖鐨勫師濮嬪悕 - fujianYuashiMing=java.net.URLDecoder.decode(fujianYuashiMing,"UTF-8");//鍥剧墖鍘熷鍚嶇殑缂栫爜鏂瑰紡 - System.out.println(fujianYuashiMing+fujianPath);//杈撳嚭鍥剧墖鐨勫師濮嬪悕鍜岃矾寰 - - SmartUpload su = new SmartUpload(); // 鏂板缓涓涓猄martUpload瀵硅薄 - - su.initialize(pageContext); // 鍒濆鍖 - - su.setContentDisposition(null); - // 璁惧畾contentDisposition涓簄ull浠ョ姝㈡祻瑙堝櫒鑷姩鎵撳紑鏂囦欢锛 - //淇濊瘉鐐瑰嚮閾炬帴鍚庢槸涓嬭浇鏂囦欢銆傝嫢涓嶈瀹氾紝鍒欎笅杞界殑鏂囦欢鎵╁睍鍚嶄负 - //doc鏃讹紝娴忚鍣ㄥ皢鑷姩鐢╳ord鎵撳紑瀹冦傛墿灞曞悕涓簆df鏃讹紝灏嗙敤acrobat鎵撳紑 - su.downloadFile(fujianPath, null, new String(fujianYuashiMing.getBytes(), "ISO8859-1")); // 涓嬭浇涓枃鏂囦欢 - out.clear(); - out=pageContext.pushBody(); - } - catch(Exception e) - {%> - - <%} - %> - - - - diff --git a/util/Cart.java b/util/Cart.java new file mode 100644 index 0000000..259eea4 --- /dev/null +++ b/util/Cart.java @@ -0,0 +1,95 @@ +package com.itbaizhan.util; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +import com.itbaizhan.orm.Tgoods; +import com.itbaizhan.orm.TorderItem; + +public class Cart { + + // 购物车属性 + // 使用一个 Map 存储购物项,Map 的 key 是商品的 id,value 是购物项 TorderItem + protected Map items; + + /** + * 构造函数,初始化购物车。 + * 如果购物车的 items 为 null,创建一个新的 HashMap 实例。 + */ + public Cart() { + if (items == null) { + items = new HashMap(); // 初始化购物车,使用 HashMap 存储购物项 + } + } + + /** + * 将商品添加到购物车中。 + * 如果购物车中已经存在该商品,则增加该商品的数量;如果不存在,则新建购物项并添加。 + * + * @param goodsId 商品的 ID + * @param orderItem 购物项,即商品的详细信息,包括数量等 + */ + public void addGoods(String goodsId, TorderItem orderItem) { + // 判断购物车中是否已经存在该商品 + if (items.containsKey(goodsId)) { // 如果购物车中已存在该商品 + // 获取原有的购物项,更新商品的数量 + TorderItem _orderItem = items.get(goodsId); // 获取购物车中原有的购物项 + _orderItem.setGoods_quantity(_orderItem.getGoods_quantity() + orderItem.getGoods_quantity()); // 更新数量 + items.put(goodsId, _orderItem); // 更新购物车中的该商品项 + } else { // 如果购物车中没有该商品 + items.put(goodsId, orderItem); // 将新的购物项添加到购物车 + } + } + + /** + * 从购物车中删除指定商品。 + * 根据商品的 ID 删除对应的购物项。 + * + * @param goodsId 商品的 ID + */ + public void delGoods(String goodsId) { + items.remove(goodsId); // 从购物车中删除指定商品 + } + + /** + * 更新购物车中某个商品的数量。 + * + * @param goodsId 商品的 ID + * @param quantity 新的商品数量 + */ + public void updateCart(String goodsId, int quantity) { + // 获取购物车中的购物项,并更新数量 + TorderItem orderItem = items.get(goodsId); + orderItem.setGoods_quantity(quantity); // 更新数量 + items.put(goodsId, orderItem); // 更新购物车中的该商品项 + } + + /** + * 获取购物车中所有商品的总价。 + * 遍历购物车中的所有商品,根据每个商品的特价和数量计算总价。 + * + * @return 购物车中所有商品的总价 + */ + public int getTotalPrice() { + int totalPrice = 0; // 初始化总价为 0 + // 遍历购物车中的所有商品 + for (Iterator it = items.values().iterator(); it.hasNext();) { + TorderItem orderItem = (TorderItem) it.next(); // 获取当前购物项 + Tgoods goods = orderItem.getGoods(); // 获取商品信息 + int quantity = orderItem.getGoods_quantity(); // 获取商品数量 + totalPrice += goods.getTejia() * quantity; // 计算该商品的总价并累加到总价 + } + return totalPrice; // 返回购物车中商品的总价 + } + + /** + * 获取购物车中的所有商品。 + * 返回一个 Map,其中 key 是商品 ID,value 是购物项。 + * + * @return 购物车中的所有商品 + */ + public Map getItems() { + return items; // 返回购物车中的所有商品 + } +} diff --git a/util/EncodingFilter.java b/util/EncodingFilter.java new file mode 100644 index 0000000..cdaf09e --- /dev/null +++ b/util/EncodingFilter.java @@ -0,0 +1,78 @@ +package com.itbaizhan.util; + +import java.io.IOException; +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; + +public class EncodingFilter implements Filter { + + // 用于存储编码格式 + protected String encoding = null; + + // 用于存储 Filter 的配置信息 + protected FilterConfig filterConfig = null; + + /** + * 销毁方法。过滤器销毁时调用。清理资源。 + */ + public void destroy() { + this.encoding = null; // 清空编码设置 + this.filterConfig = null; // 清空过滤器配置 + } + + /** + * 过滤请求和响应。 + * 在这个方法中,进行请求和响应的编码设置。 + * + * @param request 请求对象,允许访问客户端请求的内容。 + * @param response 响应对象,允许设置响应的内容。 + * @param chain FilterChain 对象,允许将请求和响应传递到下一个过滤器或目标资源(例如 Servlet)。 + * @throws IOException IO 异常 + * @throws ServletException Servlet 异常 + */ + public void doFilter(ServletRequest request, ServletResponse response, + FilterChain chain) throws IOException, ServletException { + + // 获取请求的编码格式 + String encoding = selectEncoding(request); + + // 如果编码格式不为空,则设置请求和响应的编码格式 + if (encoding != null) { + request.setCharacterEncoding(encoding); // 设置请求的编码 + response.setCharacterEncoding(encoding); // 设置响应的编码 + } + + // 将请求和响应传递给下一个过滤器或目标资源 + chain.doFilter(request, response); + } + + /** + * 初始化方法。用于初始化过滤器配置。 + * 在过滤器启动时调用,通常用于读取 web.xml 中的配置参数。 + * + * @param filterConfig 过滤器的配置信息对象 + * @throws ServletException 初始化时发生异常 + */ + public void init(FilterConfig filterConfig) throws ServletException { + this.filterConfig = filterConfig; + + // 获取 web.xml 中配置的编码格式参数 + this.encoding = filterConfig.getInitParameter("encoding"); + } + + /** + * 根据请求选择字符编码。 + * 该方法可以进行扩展,以支持不同的编码选择机制。 + * + * @param request 请求对象 + * @return 选择的字符编码 + */ + protected String selectEncoding(ServletRequest request) { + // 返回初始化时配置的编码格式 + return (this.encoding); + } +}