当前位置: 首页 > news >正文

网站制作需要多少钱?抖 音 免费 下载

网站制作需要多少钱?,抖 音 免费 下载,成都搭建网站,做网站做本地服务器吗基于 B/S 架构的电商平台#xff08;java web#xff09; 课程设计实验目的课程设计实验环境课程设计功能概述课程设计需求分析三层架构图功能列表系统用例图系统活动图-用户端需求分析 课程设计详细设计实现过程数据库BaseServlet 的实现商品显示模块-分页显示所有商品、查看… 基于 B/S 架构的电商平台java web 课程设计实验目的课程设计实验环境课程设计功能概述课程设计需求分析三层架构图功能列表系统用例图系统活动图-用户端需求分析 课程设计详细设计实现过程数据库BaseServlet 的实现商品显示模块-分页显示所有商品、查看单个商品详细信息用户模块-新用户注册、用户登录、用户退出支付模块-完成在线支付功能购物车模块-加入商品到购物车、修改所购商品数量订单模块-提交订单并显示订单信息、用户确认后生成正式订单、用户查看历史订单收货地址-管理收货地址(增删改查)管理模块-增加、删除、修改、查找会员、订单、商品信息 测试过程用户模块-新用户注册、用户登录、用户退出商品显示模块-分页显示所有商品、查看单个商品详细信息购物车模块-加入商品到购物车、修改所购商品数量订单模块-提交订单并显示订单信息、用户确认后生成正式订单、用户查看历史订单支付模块-完成在线支付功能收货地址-管理收货地址 (增删改查)管理模块-增加、删除、修改、查找会员、订单、商品信息 项目代码来源与下载 课程设计实验目的 本次实验旨在通过开发一个基于B/S架构的电商平台深入学习Web开发技术掌握相关知识和技能。通过本综合实验可以学到如下内容 Web开发技术掌握了B/S架构、前端技术JSP、CSS、JavaScript和后端技术Java、Servlet利用Ajax实现了前后端数据交互提升了用户体验。数据库技术学习了MySQL数据库的使用与管理设计了安全稳定的数据库结构并应用了C3P0连接池技术以提高开发效率。系统开发流程深入了解了系统开发的全过程包括需求分析、技术选型、架构设计、编码实现、测试调试等各个环节。安全防护掌握了MD5和Base64等加密技术保护用户隐私和信息安全并学习了防止SQL注入、XSS攻击等安全措施。系统功能设计熟悉了电商平台的业务流程和功能需求涵盖了商品展示、用户管理、订单处理、支付等功能的设计和实现。代码设计和优化运用反射技术创建BaseServlet实现一个servlet对应多个方法提高了代码的复用性和可维护性。同时使用BeanUtils工具类实现了不同对象之间的映射。 课程设计实验环境 PyCharm - 用于编写和管理Java代码。MySQL - 用作关系型数据库管理系统存储和管理数据。Chrome浏览器 -用于调试和展示Web应用。Apache Tomcat 8.5.97 - 用作Web服务器运行和管理Java Web应用程序 课程设计功能概述 MyShop商城是一个完整的电商购物平台可通过正确的用户名及其密码进入系统购物。系统分为七大模块商品展示模块、用户模块、购物车模块、订单模块、支付模块、后台模块。该系统分为用户端和管理端两部分。 用户端主要功能包括浏览商品加入购物车支付订单查询订单。管理端主要功能包括增加、删除、修改、查找会员、订单、商品信息。 该系统有三个参与者分别为会员、游客和管理员。会员登录后可以浏览商品信息将商品加入购物车下单支付订单游客可以浏览商品信息但在加入购物车时会弹出会员登录注册窗口管理员登录后可以管理商品信息、会员信息以及订单信息。 课程设计需求分析 三层架构图 该系统采用了经典的三层架构模式分为客户端、Web层、Service层和Dao层。 通过三层架构图可以看出在这个系统中数据流动遵循着清晰的路径从客户端发起请求经过Web层接收并解析请求通过BeanUtils工具类映射参数后调用Service层处理业务逻辑。Service层需要数据库操作于是调用Dao层与数据库进行交互执行相应的SQL操作。数据结果再经由Dao层返回给Service层Service层处理结果并返回给Web层。最终Web层将响应结果反馈给客户端完成了整个数据流动和处理的过程。 注由于功能较多所以将所有功能的三层架构逻辑统一成一个三层架构图 功能列表 系统用例图 系统活动图-用户端 需求分析 课程设计详细设计 实现过程 数据库 drop table if exists address; drop table if exists cart; drop table if exists item; drop table if exists orders; drop table if exists product; drop table if exists type; drop table if exists user;-- 地址表存储用户的收货地址信息 create table address(a_id int not null auto_increment comment 地址实体的唯一主键列,u_id int comment 用户实体的主键属性,a_name varchar(30) comment 地址的收件人,a_phone varchar(14) comment 收件人电话,a_detail varchar(200) comment 收货人详细地址,a_state int comment 是否是默认地址 0 不是 1是默认地址,primary key (a_id) );-- 购物车表存储用户购物车中的商品信息 create table cart(c_id int not null auto_increment comment 购物车的唯一标识,u_id int comment 用户实体的主键属性,p_id int comment 商品的唯一主键,c_count decimal(12, 2) comment 购物车小计,c_num int comment 购物车商品数量,primary key (c_id) );-- 订单项表记录订单中的商品详情 create table item(i_id int not null auto_increment comment 订单项的唯一标识,o_id varchar(64) comment 订单编号是字符串类型但是也是唯一标识,p_id int comment 商品的唯一主键,i_count decimal(12, 2) comment 订单项的小计,i_num int comment 订单项的数量,primary key (i_id) );-- 订单表存储用户的订单信息 create table orders(o_id varchar(64) not null comment 订单编号是字符串类型但是也是唯一标识,u_id int comment 用户实体的主键属性,a_id int comment 地址实体的唯一主键列,o_count decimal(12, 2) comment 订单的总金额,o_time datetime comment 订单的详细时间,o_state int comment 订单状态 0 未付款1已经付款未发货 2发货待收货 3 收货待评价 4订单完成 5 退货状态,primary key (o_id) );-- 商品表存储商品的详细信息 create table product(p_id int not null auto_increment comment 商品的唯一主键,t_id int comment 类别的主键id,p_name varchar(50) comment 商品的名称,p_time date comment 商品的上市时间,p_image varchar(100) comment 商品图片的路径,p_price decimal(12, 2) comment 商品的价格,p_state int comment 商品的热门指数,p_info varchar(200) comment 商品的描述,primary key (p_id) );-- 类别表存储商品的类别信息 create table type(t_id int not null auto_increment comment 类别的主键id,t_name varchar(20) comment 类别的名称,t_info varchar(200) comment 类别的描述,primary key (t_id) );-- 用户表存储用户信息包括会员和管理员信息 create table user(u_id int not null auto_increment comment 用户实体的主键属性,u_name varchar(20) not null comment 用户账号,u_password varchar(64) not null comment 用户密码,u_email varchar(50) not null comment 用户的邮箱用于激活使用,u_sex varchar(4) comment 用户性别,u_status int comment 用户的激活状态 0 未激活 1 激活,u_code varchar(64) comment 邮件激活码,u_role int comment 用户 0 管理员 1,primary key (u_id) ); 插入数据 INSERT INTO product(t_id, p_name, p_time, p_image, p_price, p_state, p_info) VALUES (1, 红米4, 1990-01-01, image/gwc_xiaomi6.jpg, 1999, 4, 红米4手机主打性价比!吸引年轻), (1, 红米4, 1990-01-01, image/liebiao_hongmin4.jpg, 1999, 4, 红米4手机主打性价比!吸引年轻), (1, 红米4, 1990-01-01, image/liebiao_hongmin4x.jpg, 1999, 4, 红米4手机主打性价比!吸引年轻), (1, 红米4, 1990-01-01, image/liebiao_hongmin42.jpg, 1999, 4, 红米4手机主打性价比!吸引年轻), (1, 红米4, 1990-01-01, image/liebiao_xiaomi5.jpg, 1999, 4, 红米4手机主打性价比!吸引年轻), (1, 红米4, 1990-01-01, image/liebiao_xiaomi5c.jpg, 1999, 4, 红米4手机主打性价比!吸引年轻), (1, 红米4, 1990-01-01, image/liebiao_xiaomi5s.jpg, 1999, 4, 红米4手机主打性价比!吸引年轻), (1, 红米4, 1990-01-01, image/liebiao_xiaomi6.jpg, 1999, 4, 红米4手机主打性价比!吸引年轻), (1, 红米4, 1990-01-01, image/liebiao_xiaomimix.jpg, 1999, 4, 红米4手机主打性价比!吸引年轻), (1, 红米4, 1990-01-01, image/liebiao_xiaomint2.jpg, 1999, 4, 红米4手机主打性价比!吸引年轻), (1, 红米4, 1990-01-01, image/liebiao_hongmin4.jpg, 1999, 4, 红米4手机主打性价比!吸引年轻), (1, 红米4, 1990-01-01, image/liebiao_hongmin4.jpg, 1999, 4, 红米4手机主打性价比!吸引年轻), (2, 红米4手机壳, 1990-01-01, image/peijian2.jpg, 20, 5, 红米4手机壳用心保护你的手机), (2, 红米4手机壳, 1990-01-01, image/peijian2.jpg, 20, 5, 红米4手机壳用心保护你的手机), (2, 红米4手机壳, 1990-01-01, image/peijian2.jpg, 20, 5, 红米4手机壳用心保护你的手机), (2, 红米4手机壳, 1990-01-01, image/peijian2.jpg, 20, 5, 红米4手机壳用心保护你的手机), (2, 红米4手机壳, 1990-01-01, image/peijian2.jpg, 20, 9, 红米4手机壳用心保护你的手机), (2, 红米4手机壳, 1990-01-01, image/peijian2.jpg, 20, 8, 红米4手机壳用心保护你的手机), (2, 红米4手机壳, 1990-01-01, image/peijian2.jpg, 20, 6, 红米4手机壳用心保护你的手机), (2, 红米4手机壳, 1990-01-01, image/peijian2.jpg, 20, 7, 红米4手机壳用心保护你的手机), (2, 红米4手机壳, 1990-01-01, image/peijian2.jpg, 20, 5, 红米4手机壳用心保护你的手机), (2, 红米4手机壳, 1990-01-01, image/peijian2.jpg, 20, 4, 红米4手机壳用心保护你的手机), (2, 红米4手机壳, 1990-01-01, image/peijian2.jpg, 20, 3, 红米4手机壳用心保护你的手机), (2, 红米4手机壳, 1990-01-01, image/peijian2.jpg, 20, 2, 红米4手机壳用心保护你的手机), (2, 红米4手机壳, 1990-01-01, image/peijian2.jpg, 20, 4, 红米4手机壳用心保护你的手机), (2, 红米4手机壳, 1990-01-01, image/peijian2.jpg, 20, 1, 红米4手机壳用心保护你的手机)INSERT INTO type (t_name, t_info) VALUES(笔记本, 这是笔记本类别的描述),(平板, 这是平板类别的描述),(家电, 这是家电类别的描述),(路由器, 这是路由器类别的描述),(服务中心, 这是服务中心类别的描述),(社区, 这是社区类别的描述);BaseServlet 的实现 创建一个BaseServlet类让他去继承HttpServlet!在BaseServlet中写service方法! BaseServlet是一个类继承自HttpServlet其中包含了一个service方法。在service方法中它实现了以下逻辑首先它获取请求中的标识符然后利用反射机制调用相应的业务逻辑。这样设计的好处在于每个模块的Controller只需要继承BaseServlet无需重复编写service方法便于代码的组织和管理。另外BaseServlet还对返回值进行了优化处理统一了方法的返回值为字符串并约定了特殊的标识符格式如“forward:路径”以便统一处理转发、重定向或返回字符串的情况。在标识符异常情况下BaseServlet会默认使用index方法进行处理确保每个Controller都有默认的入口方法。 package com.itqf.controller;import com.itqf.utils.Constants;import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.lang.reflect.Method;/*** BaseServlet用于集中处理方法的调用* 以及返回值处理* 以及默认页对应方法*/ public class BaseServlet extends HttpServlet {/*** service方法用于处理所有的HTTP请求** param req HTTP请求对象* param res HTTP响应对象* throws ServletException Servlet异常* throws IOException IO异常*/Overridepublic void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {//1.获取请求参数标识符String methodStr req.getParameter(Constants.TAG);//2.参数异常如果method没有获取到值则跳转到首页标识符异常处理if (methodStr null methodStr.equals()) {methodStr Constants.INDEX;}//3.反射调用对应的业务逻辑方法//.获取类的class对象Class clazz this.getClass();//2.获取方法 参数1方法名 参数2方法类型try {Method method clazz.getMethod(methodStr, HttpServletRequest.class, HttpServletResponse.class);//执行方法 参数1要执行方法的对象 参数2执行方法传入句的参数 返回值执行方法的返回值如果方法为void返回值为nullObject result method.invoke(this, req, res);//集中处理返回值响应if (result ! null) {//转发 重定向 返回字符String str (String) result;if (str.startsWith(Constants.FORWARD)) {//转发String path str.substring(str.indexOf(Constants.FLAG) 1);req.getRequestDispatcher(path).forward(req, res);} else if (str.startsWith(Constants.REDIRECT)) {//重定向String path str.substring(str.indexOf(Constants.FLAG) 1);res.sendRedirect(path);} else {res.getWriter().println(str);}}} catch (Exception e) {//controller 和 service dao 有异常都会到此处e.printStackTrace();req.getSession().setAttribute(msg, 程序异常!请稍后再试);res.sendRedirect(/message.jsp);}}/*** 当method标识符‘没有值’ 默认赋 index 访问每个controller的index方法* 将方法提取到baseservlet中减少代码冗余* 默认处理跳转到程序的首页** param req HTTP请求对象* param resp HTTP响应对象* return 返回转发到程序首页的路径* throws IOException IO异常* throws ServletException Servlet异常*/public String index(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {return Constants.FORWARD /index.jsp;} } 商品显示模块-分页显示所有商品、查看单个商品详细信息 由于代码量较多只展示三层架构中 DAO层、WEB层、Service层的代码 Dao package com.itqf.dao.impl;import com.itqf.dao.ProductDao;import com.itqf.entity.Product;import com.itqf.utils.C3P0Utils;import org.apache.commons.dbutils.QueryRunner;import org.apache.commons.dbutils.handlers.BeanHandler;import org.apache.commons.dbutils.handlers.BeanListHandler;import org.apache.commons.dbutils.handlers.ScalarHandler;import java.sql.SQLException;import java.util.List;public class ProductDaoImpl implements ProductDao {/*** 根据商品类别ID查询该类别商品总数* param tid 商品类别ID* return 商品总数* throws SQLException SQL异常*/Overridepublic long selectCountByTid(String tid) throws SQLException {QueryRunner queryRunner new QueryRunner(C3P0Utils.getDataSource());// COUNT()是一个SQL聚合函数用于计算指定列的行数记录数String sql select count(1) from product where t_id ?;Object result queryRunner.query(sql, new ScalarHandler(), tid);Long total (Long) result;return total;}/*** 分页查询指定类别的商品列表* param page 当前页码* param pageSize 每页显示数量* param tid 商品类别ID* return 商品列表* throws SQLException SQL异常*/Overridepublic ListProduct selectProductByPage(int page, int pageSize, String tid) throws SQLException {QueryRunner queryRunner new QueryRunner(C3P0Utils.getDataSource());String sql select p_id as pid, t_id as tid, p_name as pname, p_time as ptime, p_image as pimage, p_state as pstate, p_info as pinfo, p_price as pprice from product where t_id ? limit ?, ?;ListProduct list queryRunner.query(sql, new BeanListHandler(Product.class),tid, (page - 1) * pageSize, pageSize);return list;}/*** 根据商品ID查询商品详细信息* param pid 商品ID* return 商品详细信息* throws SQLException SQL异常*/Overridepublic Product selectProductByPid(String pid) throws SQLException {QueryRunner queryRunner new QueryRunner(C3P0Utils.getDataSource());String sql select p_id as pid, t_id as tid, p_name as pname, p_time as ptime, p_image as pimage, p_state as pstate, p_info as pinfo, p_price as pprice from product where p_id ?;Product product queryRunner.query(sql, new BeanHandler(Product.class), pid);return product;}} Service层 package com.itqf.service.impl;import com.itqf.dao.ProductDao;import com.itqf.dao.impl.ProductDaoImpl;import com.itqf.entity.PageBean;import com.itqf.entity.Product;import com.itqf.service.ProductService;import java.sql.SQLException;import java.util.List;public class ProductServiceImpl implements ProductService {/*** 根据类别ID和页码查询对应商品信息并封装成分页对象* param tid 商品类别ID* param page 当前页码* param pageSize 每页显示数量* return 分页对象* throws SQLException SQL异常*/Overridepublic PageBeanProduct findPage(String tid, int page, int pageSize) throws SQLException {ProductDao productDao new ProductDaoImpl();long count productDao.selectCountByTid(tid); // 查询总条数ListProduct list productDao.selectProductByPage(page, pageSize, tid); // 查询当前页对应的商品return new PageBean(list, page, pageSize, count);}/*** 根据商品ID查询商品详细信息* param pid 商品ID* return 商品详细信息* throws SQLException SQL异常*/Overridepublic Product findProductByPid(String pid) throws SQLException {ProductDao productDao new ProductDaoImpl();Product product productDao.selectProductByPid(pid);return product;}}Web层对应controller包的内容 package com.itqf.controller;import com.itqf.entity.PageBean;import com.itqf.entity.Product;import com.itqf.service.ProductService;import com.itqf.service.impl.ProductServiceImpl;import com.itqf.utils.Constants;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.sql.SQLException;/*** 分页商品展示的controller*/WebServlet(/product)public class ProductController extends BaseServlet {/*** 展示商品列表* param request HTTP请求对象* param response HTTP响应对象* return 页面转发路径* throws SQLException SQL异常*/public String show(HttpServletRequest request, HttpServletResponse response) throws SQLException {// 1.接收请求参数tid 类别idString tid request.getParameter(tid);// 页容量int pageSize 8;// 从前端获取当前页数String currentPage request.getParameter(currentPage);int page 1; // 默认第一页if (currentPage ! null) {page Integer.parseInt(currentPage);}// 2.调用业务逻辑得到前端需要展示的PageBeanProductService productService new ProductServiceImpl();PageBeanProduct pageBean productService.findPage(tid, page, pageSize);// 3.响应request.setAttribute(pageBean, pageBean);return Constants.FORWARD /goodsList.jsp;}/*** 展示商品详情* param request HTTP请求对象* param response HTTP响应对象* return 页面转发路径* throws SQLException SQL异常*/public String detail(HttpServletRequest request, HttpServletResponse response) throws SQLException {// 1.获取请求参数String pid request.getParameter(pid);// 2.调用业务逻辑ProductService productService new ProductServiceImpl();Product product productService.findProductByPid(pid);// 3.响应request.setAttribute(product, product);return Constants.FORWARD /goodsDetail.jsp;}}\end{lstlisting} 前端页面对应goodsList.jsp 和goodsDetail.jsp的内容 用户模块-新用户注册、用户登录、用户退出 DAO层对应UserDaoImpl.java包的内容 package com.itqf.dao.impl;import com.itqf.dao.UserDao;import com.itqf.entity.User;import com.itqf.utils.C3P0Utils;import com.itqf.utils.Constants;import org.apache.commons.dbutils.QueryRunner;import org.apache.commons.dbutils.handlers.BeanHandler;import java.sql.SQLException;/*** 数据库访问实现类*/public class UserDaoImpl implements UserDao {Overridepublic User selectUserByUname(String username) throws SQLException {//1.创建一个QueryRunner对象 获取一个数据库连接池数据源。C3P0是一个流行的开源数据库连接池QueryRunner queryRunner new QueryRunner(C3P0Utils.getDataSource());//2.执行SQL语句String sql select u_id as uid , u_name as username , u_password as upassword , u_sex as usex , u_status as ustatus , u_code as code , u_email as email , u_role as urole from user where u_name ?;User user queryRunner.query(sql, new BeanHandlerUser(User.class), username); //将查询结果映射到一个Java对象中return user;}Overridepublic int insertUser(User user) throws SQLException {//1.创建一个QueryRunner对象 获取一个数据库连接池数据源。C3P0是一个流行的开源数据库连接池QueryRunner queryRunner new QueryRunner(C3P0Utils.getDataSource());//2.执行SQL语句 插入数据String sql insert into user (u_name,u_password,u_sex,u_status, u_code,u_email,u_role) value (?,?,?,?,?,?,?);int rows queryRunner.update(sql, user.getUsername(), user.getUpassword(), user.getUsex(),user.getUstatus(), user.getCode(), user.getEmail(), user.getUrole());return rows;}Overridepublic User selectUserByCode(String code) throws SQLException {//1.创建一个QueryRunner对象 获取一个数据库连接池数据源。C3P0是一个流行的开源数据库连接池QueryRunner queryRunner new QueryRunner(C3P0Utils.getDataSource());//2.执行SQL语句String sql select u_id as uid , u_name as username , u_password as upassword , u_sex as usex , u_status as ustatus , u_code as code , u_email as email , u_role as urole from user where u_code ?;User user queryRunner.query(sql, new BeanHandlerUser(User.class), code); //将查询结果映射到一个Java对象中return user;}Overridepublic int updataStatusByid(int uid) throws SQLException {//1.创建一个QueryRunner对象 获取一个数据库连接池数据源。C3P0是一个流行的开源数据库连接池QueryRunner queryRunner new QueryRunner(C3P0Utils.getDataSource());String sql update user set u_status ? where u_id ?;int row queryRunner.update(sql, Constants.USER_ACTIVE, uid);return row;}}Service层对应UserDaoImpl.java包的内容 package com.itqf.service.impl;import com.itqf.dao.UserDao; import com.itqf.dao.impl.UserDaoImpl; import com.itqf.entity.User; import com.itqf.service.UserService; import com.itqf.utils.Constants; import com.itqf.utils.EmailUtils; import com.itqf.utils.MD5Utils;import java.sql.SQLException;public class UserServiceImpl implements UserService {/*** 验证注册用户名是否可用** param username 被检测的用户名* return* throws SQLException*/Overridepublic boolean checkedUser(String username) throws SQLException {//1.创建dao访问对象UserDao userDao new UserDaoImpl();//2.执行结果User user userDao.selectUserByUname(username);//3.处理返回值if (user ! null) {return true;}return false;}/*** 用户注册逻辑** param user* return* throws SQLException*/Overridepublic int registerUser(User user) throws SQLException {//1.用户保存到数据库UserDao userDao new UserDaoImpl();int row userDao.insertUser(user);//2.发送一封邮件EmailUtils.sendEmail(user);return row;}/*** 激活** param code 根据激活码进行激活* return* throws SQLException*/Overridepublic int activeUser(String code) throws SQLException {UserDao userDao new UserDaoImpl();//1.根据激活码查找用户User user userDao.selectUserByCode(code);if (user null) {return Constants.ACTIVE_FAIL;//0激活失败}//2.判断用户是否激活if (user.getUstatus().equals(Constants.USER_ACTIVE)) {return Constants.ACTIVE_ALREADY;}//3.进行激活操作int i userDao.updataStatusByid(user.getUid());if (i 0) {return Constants.ACTIVE_SUCCESS;}return Constants.ACTIVE_FAIL;}/*** 登录业务** param username* param password* return*/Overridepublic User login(String username, String password) throws SQLException {//1.需要密码用md5处理String md5password MD5Utils.md5(password);//2.根据用户名查找用户UserDao userDao new UserDaoImpl();User user userDao.selectUserByUname(username);if (user ! null user.getUpassword().equals(md5password)) {return user;}return null;} } Web层对应UserController.java包的内容 package com.itqf.controller;import com.itqf.entity.User; import com.itqf.service.UserService; import com.itqf.service.impl.UserServiceImpl; import com.itqf.utils.Base64Utils; import com.itqf.utils.Constants; import com.itqf.utils.MD5Utils; import com.itqf.utils.RandomUtils; import org.apache.commons.beanutils.BeanUtils;import javax.servlet.annotation.WebServlet; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.lang.reflect.InvocationTargetException; import java.sql.SQLException; import java.util.Map;/** * 用户用户模块的controller */ WebServlet(/user) public class UserController extends BaseServlet {/*用于检查用户是否存在的方法根据请求中的用户名调用 UserService 中的方法检查用户是否存在。*/public String check(HttpServletRequest request, HttpServletResponse response) throws SQLException {//1.获取用户名String username request.getParameter(username);if (username null) {return Constants.HAS_USER; //不能注册}// 2.调用业务逻辑判断用户名是否存在UserService userService new UserServiceImpl();boolean b userService.checkedUser(username);// 3.响应字符串 存在1 不存在0if (b) {//用户存在return Constants.HAS_USER;}return Constants.NOT_HAS_USER;}/*用于处理用户注册请求获取用户信息并调用 UserService 完成用户注册。*/public String register(HttpServletRequest request, HttpServletResponse response) throws SQLException {//1.获取用户信息MapString, String[] parameterMap request.getParameterMap();User user new User();try {BeanUtils.populate(user, parameterMap); //映射到user} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}//2.完善用户信息user.setUstatus(Constants.USER_NOT_ACTIVE); //默认未激活状态0激活1user.setUrole(Constants.ROLE_CUSTOMER); //普通客户0 管理员1user.setCode(RandomUtils.createActive());//激活码// 密码加密md5进行加密user.setUpassword(MD5Utils.md5(user.getUpassword()));//3.调用用户业务逻辑进行注册UserService userService new UserServiceImpl();try {userService.registerUser(user);} catch (SQLException e) {e.printStackTrace();request.setAttribute(registerMsg, 注册失败);return Constants.FORWARD /register.jsp;}//4.响应 注册成功跳转激活页面return Constants.FORWARD /registerSuccess.jsp;}public String active(HttpServletRequest request, HttpServletResponse response) throws SQLException {//1.获取激活码//已经转成base64String c request.getParameter(c);System.out.println(cc);//base64翻转String code Base64Utils.decode(c);//2.调用激活的业务逻辑UserService userService new UserServiceImpl();int i userService.activeUser(code);//3.响应(激活失败code没有找到 已经激活 激活成功)if (i Constants.ACTIVE_FAIL) {request.setAttribute(msg, 未激活成功);} else if (i Constants.ACTIVE_SUCCESS) {request.setAttribute(msg, 激活成功请登录);} else {request.setAttribute(msg, 已经激活);}return Constants.FORWARD /message.jsp;}/*** 1.前端提交账号密码和验证码* 2.对比验证码 成功 ---》 对比账号密码* 3.对比账号密码* 失败 --》 回到登录页面 进行提示* 成功 --》 未激活 登录页面 进行提示* --》 已激活 程序的首页 将用户放入session共享域*/public String login(HttpServletRequest request, HttpServletResponse response) throws SQLException {//1.获取请求参数用户名密码验证码String username request.getParameter(username);String password request.getParameter(password);String code request.getParameter(code);//用户输入的验证码String auto request.getParameter(auto); //自动登录标识//正确的验证码HttpSession session request.getSession();String codestr (String) session.getAttribute(code);//2.判断验证码是否正确// 不考虑大小写比较// System.out.println(输入code);// System.out.println(正确codestr);// System.out.println(code null || !code.equalsIgnoreCase(codestr));if (code null || !code.equalsIgnoreCase(codestr)) {request.setAttribute(msg, 验证码错误);return Constants.FORWARD /login.jsp;}//3.调用业务逻辑判断账户密码UserService userService new UserServiceImpl();User user userService.login(username, password);//4.响应//user 等于null证明账号或者密码错误//user 不为null 但是user的状态是未激活状态if (user null) {request.setAttribute(msg, 账号或者密码错误);return Constants.FORWARD /login.jsp;}if (user.getUstatus().equals(Constants.USER_NOT_ACTIVE)) {request.setAttribute(msg, 账号未激活);return Constants.FORWARD /login.jsp;}//把用户放在共享域session中session.setAttribute(loginUser, user);//判断是否勾选自动登录if (auto null) {//没有勾选//将本地浏览器的存储的cookie清空Cookie cookie new Cookie(Constants.AUTO_NAME, );cookie.setPath(/);//将 Cookie 的路径设置为根路径表示该 Cookie 对于整个网站都是可见的cookie.setMaxAge(0);//最大存活时间设置为 0response.addCookie(cookie);} else {String content username Constants.FLAG password;content Base64Utils.encode(content);//自动登录数据库存储2周Cookie cookie new Cookie(Constants.AUTO_NAME, content);cookie.setPath(/);cookie.setMaxAge(14 * 24 * 60 * 60);response.addCookie(cookie);}return Constants.REDIRECT /index.jsp;}/*** 注销登录清空数据跳转到登录页面** param request* param response* return*/public String logOut(HttpServletRequest request, HttpServletResponse response) {//1.清空session中用户数据HttpSession session request.getSession();session.removeAttribute(loginUser);//2.清空和覆盖cooki存储的自动登录Cookie cookie new Cookie(Constants.AUTO_NAME, );cookie.setPath(/);cookie.setMaxAge(0);response.addCookie(cookie);//3.转发到登录页面request.setAttribute(msg, 注销登录成功);return Constants.FORWARD /login.jsp;}} 前端页面对应login.jsp的内容 支付模块-完成在线支付功能 DAO层对应OrdersDaoImpl.java的内容 public void updateStateByOid(String oid) throws SQLException {QueryRunner queryRunner new QueryRunner(C3P0Utils.getDataSource());String sql update orders set o_state ? where o_id ?;;queryRunner.update(sql, 2, oid);}Service层对应OrdersServiceImpl.java的内容 public void updateStateByOid(String oid) throws SQLException {OrdersDao ordersDao new OrdersDaoImpl();ordersDao.updateStateByOid(oid);}Web层对应PayController.java的内容 package com.itqf.controller;import com.alipay.api.AlipayApiException;import com.alipay.api.AlipayClient;import com.alipay.api.DefaultAlipayClient;import com.alipay.api.domain.AlipayTradePagePayModel;import com.alipay.api.internal.util.AlipaySignature;import com.alipay.api.request.AlipayTradePagePayRequest;import com.itqf.service.OrdersService;import com.itqf.service.impl.OrdersServiceImpl;import com.itqf.utils.AlipayConfig1;import com.itqf.utils.Constants;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.io.PrintWriter;import java.io.UnsupportedEncodingException;import java.sql.SQLException;import java.util.HashMap;import java.util.Iterator;import java.util.Map;WebServlet(/pay)public class PayController extends BaseServlet {public void createAiliPayForm(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException {//接收订单信息String orderID request.getParameter(orderId);String orderPrice request.getParameter(price);String orderBody request.getParameter(body);if (orderID ! null) {// 商户订单号商户网站订单系统中唯一订单号必填String out_trade_no new String(orderID.getBytes(ISO-8859-1), UTF-8);// 订单名称必填String subject new String(orderBody.getBytes(ISO-8859-1), UTF-8);// 付款金额必填String total_amount new String(orderPrice.getBytes(ISO-8859-1), UTF-8);// 商品描述可空String body ;// 超时时间 可空String timeout_express 8m;// 销售产品码 必填String product_code FAST_INSTANT_TRADE_PAY;/**********************/// SDK 公共请求类包含公共请求参数以及封装了签名与验签开发者无需关注签名与验签//调用RSA签名方式AlipayClient client new DefaultAlipayClient(AlipayConfig1.URL, AlipayConfig1.APPID, AlipayConfig1.RSA_PRIVATE_KEY, AlipayConfig1.FORMAT, AlipayConfig1.CHARSET, AlipayConfig1.ALIPAY_PUBLIC_KEY, AlipayConfig1.SIGNTYPE);AlipayTradePagePayRequest alipay_request new AlipayTradePagePayRequest();// 封装请求支付信息// AlipayTradeWapPayModel model new AlipayTradeWapPayModel();AlipayTradePagePayModel model new AlipayTradePagePayModel();model.setOutTradeNo(out_trade_no);model.setSubject(subject);model.setTotalAmount(total_amount);model.setBody(body);model.setTimeoutExpress(timeout_express);model.setProductCode(product_code);alipay_request.setBizModel(model);// 设置异步通知地址alipay_request.setNotifyUrl(AlipayConfig1.notify_url);// 设置同步地址alipay_request.setReturnUrl(AlipayConfig1.return_url);// form表单生产String form ;try {// 调用SDK生成表单form client.pageExecute(alipay_request).getBody();response.setContentType(text/html;charset AlipayConfig1.CHARSET);response.getWriter().write(form);//直接将完整的表单html输出到页面response.getWriter().flush();response.getWriter().close();} catch (AlipayApiException | IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}public String AiliPayReturnNotice(HttpServletRequest request, HttpServletResponse response) throws IOException, AlipayApiException, SQLException {PrintWriter out response.getWriter();// 功能支付宝服务器同步通知页面//获取支付宝GET过来反馈信息MapString, String params new HashMapString, String();MapString, String[] requestParams request.getParameterMap();for (IteratorString iter requestParams.keySet().iterator(); iter.hasNext(); ) {String name (String) iter.next();String[] values (String[]) requestParams.get(name);String valueStr ;for (int i 0; i values.length; i) {valueStr (i values.length - 1) ? valueStr values[i]: valueStr values[i] ,;}//乱码解决这段代码在出现乱码时使用valueStr new String(valueStr.getBytes(ISO-8859-1), utf-8);params.put(name, valueStr);}boolean verify_result AlipaySignature.rsaCheckV1(params, AlipayConfig1.ALIPAY_PUBLIC_KEY, AlipayConfig1.CHARSET, AlipayConfig1.SIGNTYPE); //调用SDK验证签名String out_trade_no1 new String(request.getParameter(out_trade_no).getBytes(ISO-8859-1), UTF-8);OrdersService ordersService1 new OrdersServiceImpl();ordersService1.updateStateByOid(out_trade_no1);if (!verify_result) {return Constants.FORWARD order?methodshow;} else {out.println(支付失败);return null;}}} 支付宝配置文件对应com/itqf/utils/AlipayConfig1.java的内容 package com.itqf.utils;public class AlipayConfig1 {// 商户appidpublic static String APPID 9021033645090;// 私钥 pkcs8格式的public static String RSA_PRIVATE_KEY MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCZIvxaCWfWs0ZrfoTFCaGiP3w4Y/54TZBjncd5216fBRdyAc1wqPXcSthm4E0P/6WfEFtC81EU1GBJje0em4m0CNCz985UuMHonGxPKEjH6oQuZT9sWoyqDlBSwqrq5p7CFosDrHJc13ih284kNGTUbnTC8e4q7sVIO2JGHNY1Bd6tStX5QbZwTjfO6crMM8iTYlrX2dIWzuOgXvYzbRn7x2NGg1004tiH1f8Slqa3RxoICKeniWPkvZVFRVFKPHeCyPSkeudP7AX38kXhpEYg9UNxnL1Y1ZgiZ9ZIjNCQwXnZk9qLeJtJwwxunxYoAt5GnrjkUb48xuOSlrFBJFAgMBAAECggEAIQh7QwYWyb25M844qwOMsqRCDUBun4ytRJKE8a3SCjCxO6djfuUoO2AOsjdtrrFxkcnIw2DFE3qAY2hSi2DqDsLDYjSwFDyuKbNoQRFxbOhpeOk9gAidpml0OozN0Ml/9240b6sG5GdlvM3uByc6SUCU1YugfpFIzA77KsjXwEDC6tBlMBp/BdF8mtA6Pj6oC9QkSIvUIkVLDjd1kgMxKQXkmrYx3zlaysSpSzd4IzulaqYO80AFnBxL6dTOze0L3s5u3jnHs8Wy/esn6PslkPzPtj5XXhkuENVvk57dJzo8oVslt3s7kVaeTiQTC3Qy/T2OQxAKPauJNLQKBgQDXoMbtYj4yA0nXrQuptuSruqtJaWIfDsU/9DjZWRMzU07rgo4kiOrXo0nrADbogzLGqmauonqOiTNB5l3GAC1R9I26OMF2TH6UbWkpLhXgtuNb0CGtVWXAwNQd9yWNshqyvbe40kwE4KkKtr0qKcuaMGDCqCnIGT0zYIoqx3JfwKBgQC1zvKVwdxLE5vHaSn0E9OZ2qtZw23DLkfiU3tcle2LJbH6MnkhaNN30mX6Ubo65p2QScWGrWLT9SfDemUXB8TapXItwTnJHjhXhQwiugqsTR47qx4yyWaXhGfe62ALUkIwKEfwZ1hBwYpzMsSCmb66S9c10Pqbx7dSQuwTcZeOwKBgQCIQzLSun3BTzCv2cwAAPL6zukFaFJMWGdhutN/kAhVPHvtFeuhmkBuQD8Fbf3QzdQ12XCKtg0Hdpzg8Ed76jAwXuWqC3vDq2CY5l/aXrmbm7cw5rgpKJig6KeEh2pfhtkaG47shUcv2XR6WBar5RCkLKRI/soAiGqTeBN4Oze8wKBgDMUgsmanuaZCsJ7BIOD8oaejlf49WTKIv4usFExnyGybte5PODDS70GRy8S5Ny6b/5ShrtqfdOF/Oiopu71ry8uJyEHc2G2RTiDZViNwiCqV/DUv9kpsE/bosKJdqST4nEWp83zEJUPJXEAGzsiRcPkBBUyhooBLWzFFGzAoGATM1Qk27OkQ6TYNEqd0Oypm1BE5L1DLFiU5EBXWxeUM1PCOqXSemFjN3X1PIkaZ5ASLM8yqZkXKHMXjF1T3iL9q76ohj0LGnahTF48H6m76R9Az8vmEztops9XZi9YVRMlgoDTyedHhsbzboHZA8YSykYqteXF2KFWYpQ; // 服务器异步通知页面路径 需http://或者https://格式的完整路径不能加?id123这类自定义参数必须外网可以正常访问public static String notify_url http://localhost/alipay.trade.wap.pay-JAVA-UTF-8/notify_url.jsp;// 页面跳转同步通知页面路径 需http://或者https://格式的完整路径不能加?id123这类自定义参数必须外网可以正常访问 商户可以自定义同步跳转地址public static String return_url http://localhost:8080/pay?methodAiliPayReturnNotice;// 请求网关地址public static String URL https://openapi-sandbox.dl.alipaydev.com/gateway.do;// 编码public static String CHARSET UTF-8;// 返回格式public static String FORMAT json;// 支付宝公钥public static String ALIPAY_PUBLIC_KEY MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmSL8Wgln1rNGa36ExQmhoj98OGPeE2QY53HedtenwUXcgHNcKj/l3ErYZuBND/lnxBbQvNRFNRgSY3tHpuJtAjQs/fOVLjB6JxsTyhIxqELmU/bFqMqg5QUsKq6uaewhaLA6xyXNd4odvOJDRk1G50wvHuKu7FSDtiRhXerUrVUG2cE43zunKzDPIk2Ja19nSFs7joF72M20Z8djRoNdNOLYh9X/Epamt0caCAinp4lj5L2VRUVRSjx3gvsj0pHrnTwF9/JF4aRGIPVDcZy9WNWYImfWSIzQkMF52ZPai3ibScMMbp8WKALeRp645FGPMbjkpaxQSRQIDAQAB; // 日志记录目录public static String log_path /log;// RSA2public static String SIGNTYPE RSA2;} 购物车模块-加入商品到购物车、修改所购商品数量 DAO层对应CartDaoImpl.java的内容 package com.itqf.dao.impl;import com.itqf.dao.CartDao; import com.itqf.entity.Cart; import com.itqf.entity.Product; import com.itqf.utils.C3P0Utils; import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.handlers.MapHandler; import org.apache.commons.dbutils.handlers.MapListHandler;import java.lang.reflect.InvocationTargetException; import java.math.BigDecimal; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import java.util.Map;public class CartDaoImpl implements CartDao {Overridepublic Cart hasCart(int uid, String pid) throws SQLException, InvocationTargetException, IllegalAccessException {//cart -- product 连接查询 多表查询QueryRunner queryRunner new QueryRunner(C3P0Utils.getDataSource());String sql select p.p_name as pname,p.p_id as pid,p.t_id as tid,p.p_time as ptime,p.p_image as pimage,p_state as pstate,p.p_info as pinfo, p.p_price as pprice,c.c_id as cid,c.u_id as uid,c.c_count as ccount ,c.c_num as cnum from product p join cart c on p.p_id c.p_id where c.u_id ? and c.p_id ?;MapString, Object query queryRunner.query(sql, new MapHandler(), uid, pid);if (query null) {return null;}Cart cart new Cart();Product product new Product();BeanUtils.populate(cart, query);BeanUtils.populate(product, query);cart.setProduct(product);// System.out.println(Query result: query);// System.out.println(cartcart);// System.out.println(productproduct);//方法2// ListMapString, Object list queryRunner.query(sql, new MapListHandler(), uid, pid);// if (list null) {// return null;// }// ListCart carts new ArrayList();// Cart cart new Cart();// Product product new Product();// BeanUtils.populate(cart, list.get(0));// BeanUtils.populate(product, list.get(0));// cart.setProduct(product);// carts.add(cart);//方法3// product.setPname((String) query.get(pname));// product.setPid((Integer) query.get(pid));// product.setTid((Integer) query.get(tid));// product.setPtime((Date) query.get(ptime));// product.setPimage((String) query.get(pimage));// product.setPstate((Integer) query.get(pstate));// product.setPinfo((String) query.get(pinfo));// product.setPprice((BigDecimal) query.get(pprice));//// cart.setCid((Integer) query.get(cid));// cart.setUid((Integer) query.get(uid));// cart.setCcount((BigDecimal) query.get(ccount));// cart.setCnum((Integer) query.get(cnum));//// cart.setProduct(product);return cart;}Overridepublic void updateCart(Cart cart) throws SQLException {QueryRunner queryRunner new QueryRunner(C3P0Utils.getDataSource());String sql update cart set c_num ? , c_count ? where c_id ?;int n queryRunner.update(sql, cart.getCnum(), cart.getCcount(), cart.getCid());}Overridepublic void insertCart(Cart cart) throws SQLException {QueryRunner queryRunner new QueryRunner(C3P0Utils.getDataSource());String sql insert into cart (u_id,p_id,c_num,c_count) value(?,?,?,?);int n queryRunner.update(sql, cart.getUid(), cart.getProduct().getPid(), cart.getCnum(), cart.getCcount());}Overridepublic ListCart selectCartsByUid(int uid) throws SQLException, InvocationTargetException, IllegalAccessException {//注意 查询cart需要关联到商品表//cart -- product 连接查询 多表查询QueryRunner queryRunner new QueryRunner(C3P0Utils.getDataSource());String sql select p.p_name as pname,p.p_id as pid,p.t_id as tid, p.p_time as ptime,p.p_image as pimage,p_state as pstate, p.p_info as pinfo, p.p_price as pprice,c.c_id as cid,c.u_id as uid,c.c_count as ccount, c.c_num as cnum from product p join cart c on p.p_id c.p_id where c.u_id ?;;ListMapString, Object list queryRunner.query(sql, new MapListHandler(), uid);if (list null) {return null;}ListCart carts new ArrayList();for (MapString, Object map : list) {//cart productCart cart new Cart();Product product new Product();BeanUtils.populate(cart, map);BeanUtils.populate(product, map);cart.setProduct(product);carts.add(cart);}return carts;}Overridepublic void deleteCartByCid(String cid) throws SQLException {QueryRunner queryRunner new QueryRunner(C3P0Utils.getDataSource());String sql delete from cart where c_id ?;;int update queryRunner.update(sql, cid);}Overridepublic void updateByCid(BigDecimal count, BigDecimal cnumbig, String cid) throws SQLException {QueryRunner queryRunner new QueryRunner(C3P0Utils.getDataSource());String sql update cart set c_count ? , c_num ? where c_id ?;;queryRunner.update(sql, count, cnumbig, cid);}Overridepublic void deleteCartByUid(String uid) throws SQLException {QueryRunner queryRunner new QueryRunner(C3P0Utils.getDataSource());String sql delete from cart where u_id ?;;queryRunner.update(sql, uid);}} Service层对应CartServiceImpl.java的内容 package com.itqf.service.impl;import com.itqf.dao.CartDao; import com.itqf.dao.ProductDao; import com.itqf.dao.impl.CartDaoImpl; import com.itqf.dao.impl.ProductDaoImpl; import com.itqf.entity.Cart; import com.itqf.entity.Product; import com.itqf.service.CartService;import java.lang.reflect.InvocationTargetException; import java.math.BigDecimal; import java.sql.SQLException; import java.util.List;public class CartServiceImpl implements CartService {Overridepublic void createCart(int uid, String pid) throws SQLException, InvocationTargetException, IllegalAccessException {//1.判断是否已存在CartDao cartDao new CartDaoImpl();Cart cart cartDao.hasCart(uid, pid);if (cart ! null) {//2.存在 则修改购物车cart.setCnum(cart.getCnum() 1);cartDao.updateCart(cart);} else {//3.不存在 则添加//根据商品id查询商品ProductDao productDao new ProductDaoImpl();Product product productDao.selectProductByPid(pid);cart new Cart();cart.setCnum(1);cart.setPid(Integer.parseInt(pid));cart.setProduct(product);cart.setUid(uid);cartDao.insertCart(cart);}}Overridepublic ListCart findAll(int uid) throws SQLException, InvocationTargetException, IllegalAccessException {CartDao cartDao new CartDaoImpl();ListCart carts cartDao.selectCartsByUid(uid);return carts;}Overridepublic void deleteCart(String cid) throws SQLException {CartDao cartDao new CartDaoImpl();cartDao.deleteCartByCid(cid);}Overridepublic void updateCar(String cid, String price, String cnum) throws SQLException {BigDecimal cnumbig new BigDecimal(cnum);BigDecimal pricebig new BigDecimal(price);BigDecimal count pricebig.multiply(cnumbig);CartDao cartDao new CartDaoImpl();cartDao.updateByCid(count, cnumbig, cid);}Overridepublic void clearCart(String uid) throws SQLException {CartDao cartDao new CartDaoImpl();cartDao.deleteCartByUid(uid);}} Web层对应CartController.java包的内容 package com.itqf.controller;import com.itqf.entity.Cart; import com.itqf.entity.User; import com.itqf.service.CartService; import com.itqf.service.impl.CartServiceImpl; import com.itqf.utils.Constants;import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.lang.reflect.InvocationTargetException; import java.sql.SQLException; import java.util.List;WebServlet(/cart) public class CartController extends BaseServlet {// 创建购物车public String create(HttpServletRequest request, HttpServletResponse response) throws IllegalAccessException, SQLException, InvocationTargetException {// 1.判断是否已经登录HttpSession session request.getSession();User user (User) session.getAttribute(loginUser);if (user null) {session.setAttribute(msg, 添加购物车必须先登录);return Constants.REDIRECT /login.jsp;}// 2.商品的id和用户idint uid user.getUid();String pid request.getParameter(pid);CartService cartService new CartServiceImpl();cartService.createCart(uid, pid);return Constants.FORWARD /cartSuccess.jsp;}// 展示购物车public String show(HttpServletRequest request, HttpServletResponse response) throws IllegalAccessException, SQLException, InvocationTargetException {// 1.判断是否已经登录HttpSession session request.getSession();User user (User) session.getAttribute(loginUser);if (user null) {session.setAttribute(msg, 添加购物车必须先登录);return Constants.REDIRECT /login.jsp;}// 2.获取参数int uid user.getUid();// 3.调用业务逻辑进行数据查询CartService cartService new CartServiceImpl();ListCart list cartService.findAll(uid);request.setAttribute(list, list);return Constants.FORWARD /cart.jsp;}// 删除购物车中的商品public String delete(HttpServletRequest request, HttpServletResponse response) throws SQLException {// 1.获取cidString cid request.getParameter(cid);// 2.调用业务逻辑进行删除CartService cartService new CartServiceImpl();cartService.deleteCart(cid);// 3.转发到展示的处理方法中return Constants.FORWARD /cart?methodshow;}// 更新购物车中商品的数量和价格public String update(HttpServletRequest request, HttpServletResponse response) throws SQLException {// 1.获取cidString cid request.getParameter(cid);String price request.getParameter(price); // 商品的单价String cnum request.getParameter(cnum); // 修改后的数量// 2.调用业务逻辑进行更新CartService cartService new CartServiceImpl();cartService.updateCar(cid, price, cnum);// 3.转发到展示的处理方法中return Constants.FORWARD /cart?methodshow;}// 清空购物车public String clear(HttpServletRequest request, HttpServletResponse response) throws SQLException {// 1.获取uidString uid request.getParameter(uid);// 2.调用业务逻辑进行清空购物车CartService cartService new CartServiceImpl();cartService.clearCart(uid);// 3.转发到展示的处理方法中return Constants.FORWARD /cart?methodshow;} }前端页面对应cart.jsp 和cartSuccess.jsp的内容 订单模块-提交订单并显示订单信息、用户确认后生成正式订单、用户查看历史订单 DAO层对应OrdersDaoImpl.java的内容 package com.itqf.dao.impl;import com.itqf.dao.OrdersDao; import com.itqf.entity.Address; import com.itqf.entity.Item; import com.itqf.entity.Orders; import com.itqf.entity.Product; import com.itqf.utils.C3P0Utils; import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.handlers.MapHandler; import org.apache.commons.dbutils.handlers.MapListHandler;import java.lang.reflect.InvocationTargetException; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import java.util.Map;public class OrdersDaoImpl implements OrdersDao {Overridepublic void insertOrders(Orders orders) throws SQLException {QueryRunner queryRunner new QueryRunner(C3P0Utils.getDataSource());String sql insert into orders (o_id,a_id,u_id,o_count,o_state,o_time) value(?,?,?,?,?,?);;queryRunner.update(sql, orders.getOid(), orders.getAid(), orders.getUid(), orders.getOcount(), orders.getOstate(), orders.getOtime());}Overridepublic void insertItems(ListItem items) throws SQLException {QueryRunner queryRunner new QueryRunner(C3P0Utils.getDataSource());Object[][] params new Object[items.size()][];String sql insert into item(o_id,p_id,i_count,i_num) value(?,?,?,?);;for (int i 0; i items.size(); i) {Item item items.get(i);params[i] new Object[]{item.getOid(), item.getPid(), item.getIcount(), item.getInum()};}queryRunner.batch(sql, params);}Overridepublic ListOrders selectOrdersByUid(int uid) throws InvocationTargetException, IllegalAccessException, SQLException {QueryRunner queryRunner new QueryRunner(C3P0Utils.getDataSource());String sql select o.o_id as oid,o.u_id as uid,o.a_id as aid, o.o_count as ocount,o.o_time as otime,o.o_state as ostate, a.a_name as aname,a.a_phone as aphone,a.a_detail as adetail, a.a_state as astate from address a join orders o on a.a_id o.a_id where o.u_id ?;;ListMapString, Object list queryRunner.query(sql, new MapListHandler(), uid);if (list null) {return null;}ListOrders ordersList new ArrayList();for (MapString, Object map : list) {Orders orders new Orders();Address address new Address();BeanUtils.populate(orders, map);BeanUtils.populate(address, map);orders.setAddress(address);ordersList.add(orders);}return ordersList;}Overridepublic Orders selectOrdersByOid(String oid) throws SQLException, InvocationTargetException, IllegalAccessException {QueryRunner queryRunner new QueryRunner(C3P0Utils.getDataSource());String sql select o.o_id as oid,o.u_id as uid,o.a_id as aid, o.o_count as ocount,o.o_time as otime,o.o_state as ostate, a.a_name as aname,a.a_phone as aphone,a.a_detail as adetail, a.a_state as astate from address a join orders o on a.a_id o.a_id where o.o_id ?;;MapString, Object map queryRunner.query(sql, new MapHandler(), oid);if (map null) {return null;}Orders orders new Orders();Address address new Address();BeanUtils.populate(orders, map);BeanUtils.populate(address, map);orders.setAddress(address);return orders;}Overridepublic ListItem selectItemsByOid(String oid) throws SQLException, InvocationTargetException, IllegalAccessException {QueryRunner queryRunner new QueryRunner(C3P0Utils.getDataSource());//订单项和商品String sql select p.p_id as pid, p.t_id as tid,p.p_name as pname,p.p_time as ptime , p.p_image as pimage,p.p_state as pstate ,p.p_info as pinfo ,p.p_price as pprice, i.o_id as oid, i.i_id as iid ,i.i_count as icount,i.i_num as inum from product p join item i on p.p_id i.p_id where i.o_id ?;;ListMapString, Object list queryRunner.query(sql, new MapListHandler(), oid);if (list null) {return null;}ListItem items new ArrayList();for (MapString, Object map : list) {Item item new Item();Product product new Product();BeanUtils.populate(product, map);BeanUtils.populate(item, map);item.setProduct(product);items.add(item);}return items;}Overridepublic void updateStateByOid(String oid) throws SQLException {QueryRunner queryRunner new QueryRunner(C3P0Utils.getDataSource());String sql update orders set o_state ? where o_id ?;;queryRunner.update(sql, 2, oid);}}Service层对应OrdersServiceImpl.java的内容 package com.itqf.service.impl;import com.itqf.dao.CartDao; import com.itqf.dao.OrdersDao; import com.itqf.dao.impl.CartDaoImpl; import com.itqf.dao.impl.OrdersDaoImpl; import com.itqf.entity.Cart; import com.itqf.entity.Item; import com.itqf.entity.Orders; import com.itqf.service.OrdersService; import com.itqf.utils.RandomUtils;import java.lang.reflect.InvocationTargetException; import java.math.BigDecimal; import java.sql.SQLException; import java.util.ArrayList; import java.util.Date; import java.util.List;public class OrdersServiceImpl implements OrdersService {Overridepublic void createOrder(String aid, String uid, String sum) throws SQLException, InvocationTargetException, IllegalAccessException {//1.创建一个订单对象进行保存Orders orders new Orders();BigDecimal bsum new BigDecimal(sum);String orderId RandomUtils.createOrderId();orders.setOid(orderId);orders.setAid(Integer.parseInt(aid));orders.setUid(Integer.parseInt(uid));orders.setOtime(new Date());orders.setOcount(bsum);orders.setOstate(1); //未支付状态//2.保存订单OrdersDao ordersDao new OrdersDaoImpl();ordersDao.insertOrders(orders);//3.将购物车转成订单项CartDao cartDao new CartDaoImpl();ListCart carts cartDao.selectCartsByUid(Integer.parseInt(uid));ListItem items new ArrayList();for (Cart cart : carts) {Item item new Item();item.setOid(orderId);item.setPid(cart.getPid());item.setInum(cart.getCnum());item.setIcount(cart.getCcount());items.add(item);}//4.保存订单对应的订单项ordersDao.insertItems(items);//5.清空购物车cartDao.deleteCartByUid(uid);}Overridepublic ListOrders findOrders(int uid) throws SQLException, InvocationTargetException, IllegalAccessException {OrdersDao ordersDao new OrdersDaoImpl();ListOrders list ordersDao.selectOrdersByUid(uid);return list;}Overridepublic Orders findOrder(String oid) throws SQLException, InvocationTargetException, IllegalAccessException {OrdersDao ordersDao new OrdersDaoImpl();//1.oid查询订单和订单地址信息//订单和地址Orders orders ordersDao.selectOrdersByOid(oid);//2.oid对应的对应的订单项和商品信息//订单项和商品信息ListItem items ordersDao.selectItemsByOid(oid);//3.订单项集合设置给订单对象orders.setItems(items);return orders;}Overridepublic void updateStateByOid(String oid) throws SQLException {OrdersDao ordersDao new OrdersDaoImpl();ordersDao.updateStateByOid(oid);} }Web层对应OrdersController.java包的内容 package com.itqf.controller;import com.google.gson.Gson; import com.itqf.entity.*; import com.itqf.service.AddressService; import com.itqf.service.CartService; import com.itqf.service.OrdersService; import com.itqf.service.impl.AddressServiceImpl; import com.itqf.service.impl.CartServiceImpl; import com.itqf.service.impl.OrdersServiceImpl; import com.itqf.utils.Constants;import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.UnsupportedEncodingException; import java.lang.reflect.InvocationTargetException; import java.sql.SQLException; import java.util.List;WebServlet(/order) public class OrdersController extends BaseServlet {public String preView(HttpServletRequest request, HttpServletResponse response) throws SQLException, InvocationTargetException, IllegalAccessException {//1.获取请求参数uidString uid request.getParameter(uid);//2.调用业务逻辑 地址购物车AddressService addressService new AddressServiceImpl();ListAddress addressList addressService.findAddress(Integer.parseInt(uid));CartService cartService new CartServiceImpl();ListCart cartList cartService.findAll(Integer.parseInt(uid));//3.放入共享域即可request.setAttribute(addressList, addressList);request.setAttribute(cartList, cartList);return Constants.FORWARD /order.jsp;}public String create(HttpServletRequest request, HttpServletResponse response) throws IllegalAccessException, SQLException, InvocationTargetException {//1.获取请求参数String aid request.getParameter(aid);String uid request.getParameter(uid);String sum request.getParameter(sum);//2.调用业务逻辑生成订单OrdersService ordersService new OrdersServiceImpl();ordersService.createOrder(aid, uid, sum);//3.转发到订单展示的方法return Constants.FORWARD order?methodshow;}public String show(HttpServletRequest request, HttpServletResponse response) throws IllegalAccessException, SQLException, InvocationTargetException {HttpSession session request.getSession();User user (User) session.getAttribute(loginUser);if (user null) {session.setAttribute(msg, 登录后可以查看订单);return Constants.REDIRECT /login.jsp;}OrdersService ordersService new OrdersServiceImpl();ListOrders ordersList ordersService.findOrders(user.getUid());request.setAttribute(ordersList, ordersList);return Constants.FORWARD /orderList.jsp;}public String detail(HttpServletRequest request, HttpServletResponse response) throws IllegalAccessException, SQLException, InvocationTargetException {String oid request.getParameter(oid);OrdersService ordersService new OrdersServiceImpl();Orders order ordersService.findOrder(oid);request.setAttribute(order, order);return Constants.FORWARD /orderDetail.jsp;}public String success(HttpServletRequest request, HttpServletResponse response) throws SQLException {//1.获取请求参数String oid request.getParameter(oid);String result request.getParameter(result);System.out.println(oid oid);System.out.println(result result);Gson gson new Gson();WeiXin weiXin gson.fromJson(result, WeiXin.class);String result_code weiXin.getResult().getResult_code();if (result_code ! null result_code.equals(SUCCESS)) {//支付成功//修改状态//订单列表页面OrdersService ordersService new OrdersServiceImpl();ordersService.updateStateByOid(oid);return Constants.FORWARD /order?methodshow;} else {//支付失败HttpSession session request.getSession();session.setAttribute(msg, 订单 oid 支付失败);//message.jsp页面return Constants.REDIRECT /message.jsp;}}}前端页面对应order.jsp、orderList.jsp 和orderDetail.jsp的内容 收货地址-管理收货地址(增删改查) DAO层对应AddressDaoImpl.java的内容 package com.itqf.dao.impl;import com.itqf.dao.AddressDao; import com.itqf.entity.Address; import com.itqf.utils.C3P0Utils; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.handlers.BeanListHandler;import java.sql.SQLException; import java.util.List;public class AddressDaoImpl implements AddressDao {Overridepublic ListAddress selectAddressByUid(int uid) throws SQLException {QueryRunner queryRunner new QueryRunner(C3P0Utils.getDataSource());String sql select a_id as aid, u_id as uid,a_name as aname,a_phone as aphone,a_detail as adetail ,a_state as astate from address where u_id ? order by a_state desc;;ListAddress list queryRunner.query(sql, new BeanListHandlerAddress(Address.class), uid);return list;}Overridepublic void insertAddress(Address address) throws SQLException {QueryRunner queryRunner new QueryRunner(C3P0Utils.getDataSource());String sql insert into address (u_id,a_name,a_phone,a_detail,a_state) value(?,?,?,?,?);queryRunner.update(sql, address.getUid(), address.getAname(),address.getAphone(), address.getAdetail(), address.getAstate());}Overridepublic void deleteAddressByAid(String aid) throws SQLException {QueryRunner queryRunner new QueryRunner(C3P0Utils.getDataSource());String sql delete from address where a_id ?;;queryRunner.update(sql, aid);}Overridepublic void updateAddressToDefault(String aid) throws SQLException {QueryRunner queryRunner new QueryRunner(C3P0Utils.getDataSource());String sql update address set a_state 1 where a_id ?;queryRunner.update(sql, aid);}Overridepublic void updateAddressToCommons(String aid, int uid) throws SQLException {QueryRunner queryRunner new QueryRunner(C3P0Utils.getDataSource());String sql update address set a_state 0 where a_id ! ? and u_id ?;queryRunner.update(sql, aid, uid);}Overridepublic void updateAddressByAid(Address address) throws SQLException {QueryRunner queryRunner new QueryRunner(C3P0Utils.getDataSource());String sql update address set a_state ?,a_name?,a_phone?,a_detail ? where a_id ?;;queryRunner.update(sql, address.getAstate(), address.getAname(), address.getAphone(), address.getAdetail(), address.getAid());} }Service层对应AddressServiceImpl.java的内容 package com.itqf.service.impl;import com.itqf.dao.AddressDao; import com.itqf.dao.impl.AddressDaoImpl; import com.itqf.entity.Address; import com.itqf.service.AddressService;import java.sql.SQLException; import java.util.List;public class AddressServiceImpl implements AddressService {Overridepublic ListAddress findAddress(int uid) throws SQLException {AddressDao addressDao new AddressDaoImpl();ListAddress list addressDao.selectAddressByUid(uid);return list;}Overridepublic void saveAddress(Address address) throws SQLException {AddressDao addressDao new AddressDaoImpl();addressDao.insertAddress(address);}Overridepublic void deleteAddress(String aid) throws SQLException {AddressDao addressDao new AddressDaoImpl();addressDao.deleteAddressByAid(aid);}Overridepublic void setAddressToDefault(String aid, int uid) throws SQLException {AddressDao addressDao new AddressDaoImpl();//1.将aid状态改为1 默认地址addressDao.updateAddressToDefault(aid);//2.将非aid状态改为0 非默认地址addressDao.updateAddressToCommons(aid, uid);}Overridepublic void updateAddress(Address address) throws SQLException {AddressDao addressDao new AddressDaoImpl();addressDao.updateAddressByAid(address);} }Web层对应AddressController.java的内容 package com.itqf.controller;import com.itqf.entity.Address; import com.itqf.entity.User; import com.itqf.service.AddressService; import com.itqf.service.impl.AddressServiceImpl; import com.itqf.utils.Constants; import org.apache.commons.beanutils.BeanUtils;import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.lang.reflect.InvocationTargetException; import java.sql.SQLException; import java.util.List; import java.util.Map;WebServlet(/address) public class AddressController extends BaseServlet {public String show(HttpServletRequest request, HttpServletResponse response) throws SQLException {HttpSession session request.getSession();User user (User) session.getAttribute(loginUser);if (user null){session.setAttribute(msg, 需要先登录);return Constants.REDIRECT /login.jsp;}int uid user.getUid();AddressService addressService new AddressServiceImpl();ListAddress addresses addressService.findAddress(uid);request.setAttribute(List, addresses);return Constants.FORWARD /self_info.jsp;}public String add(HttpServletRequest request,HttpServletResponse response) throws InvocationTargetException, IllegalAccessException, SQLException {//1.获取请求参数MapString, String[] map request.getParameterMap();Address address new Address();BeanUtils.populate(address,map);//2.调用业务逻辑进行地址添加AddressService addressService new AddressServiceImpl();addressService.saveAddress(address);//3。转发到展示的方法return Constants.FORWARD /address?methodshow;}public String delete(HttpServletRequest request,HttpServletResponse response) throws InvocationTargetException, IllegalAccessException, SQLException {//1.获取请求参数String aid request.getParameter(aid);//2.调用业务逻辑进行地址添加AddressService addressService new AddressServiceImpl();addressService.deleteAddress(aid);//3。转发到展示的方法return Constants.FORWARD /address?methodshow;}public String setDefault(HttpServletRequest request,HttpServletResponse response) throws InvocationTargetException, IllegalAccessException, SQLException {//1.获取请求参数String aid request.getParameter(aid);HttpSession session request.getSession();User user (User) session.getAttribute(loginUser);if (user null){session.setAttribute(msg, 需要先登录);return Constants.REDIRECT /login.jsp;}//2.调用业务逻辑进行地址添加AddressService addressService new AddressServiceImpl();addressService.setAddressToDefault(aid,user.getUid());//3。转发到展示的方法return Constants.FORWARD /address?methodshow;}public String update(HttpServletRequest request,HttpServletResponse response) throws InvocationTargetException, IllegalAccessException, SQLException {//1.获取请求参数MapString, String[] map request.getParameterMap();Address address new Address();BeanUtils.populate(address,map);//2.调用业务逻辑进行地址添加AddressService addressService new AddressServiceImpl();addressService.updateAddress(address);//3。转发到展示的方法return Constants.FORWARD /address?methodshow;} }前端页面对应self_info.jsp的内容 管理模块-增加、删除、修改、查找会员、订单、商品信息 DAO层对应AdminDaoImpl.java的内容 package com.itqf.dao.impl;import com.itqf.dao.AdminDao; import com.itqf.entity.Cart; import com.itqf.entity.Product; import com.itqf.entity.User; import com.itqf.utils.C3P0Utils; import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.handlers.BeanListHandler; import org.apache.commons.dbutils.handlers.MapListHandler;import java.lang.reflect.InvocationTargetException; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import java.util.Map;public class AdminDaoImpl implements AdminDao {Overridepublic void updateProduct(Product product) throws SQLException {QueryRunner queryRunner new QueryRunner(C3P0Utils.getDataSource());String sql INSERT INTO product (t_id, p_name, p_time, p_image, p_price, p_state, p_info) VALUES (?, ?, ?, ?, ?, ?, ?);;queryRunner.update(sql, product.getTid(), product.getPname(), product.getPtime(), product.getPimage(),product.getPprice(), product.getPstate(), product.getPinfo());}Overridepublic ListProduct selectAllGoods() throws SQLException {QueryRunner queryRunner new QueryRunner(C3P0Utils.getDataSource());String sql select p_id as pid,t_id as tid,p_name as pname,p_time as ptime , p_image as pimage,p_state as pstate ,p_info as pinfo ,p_price as pprice from product ;;ListProduct productList queryRunner.query(sql, new BeanListHandler(Product.class));return productList;}Overridepublic ListUser selectAllUser() throws SQLException {QueryRunner queryRunner new QueryRunner(C3P0Utils.getDataSource());String sql select u_id as uid , u_name as username , u_password as upassword , u_sex as usex , u_status as ustatus , u_code as code , u_email as email , u_role as urole from user;;ListUser userList queryRunner.query(sql, new BeanListHandler(User.class));return userList;}Overridepublic void deleteuserByuid(String uid) throws SQLException {QueryRunner queryRunner new QueryRunner(C3P0Utils.getDataSource());String sql delete from user where u_id ?;;queryRunner.update(sql, uid);} }Service层对应AdminServiceImpl.java的内容 package com.itqf.service.impl;import com.itqf.dao.AddressDao; import com.itqf.dao.AdminDao; import com.itqf.dao.impl.AddressDaoImpl; import com.itqf.dao.impl.AdminDaoImpl; import com.itqf.entity.Orders; import com.itqf.entity.Product; import com.itqf.entity.User; import com.itqf.service.AdminService;import java.lang.reflect.InvocationTargetException; import java.sql.SQLException; import java.util.List;public class AdminServiceImpl implements AdminService {Overridepublic void updateProduct(Product product) throws SQLException {AdminDao addressDao new AdminDaoImpl();addressDao.updateProduct(product);}Overridepublic ListProduct getAllGoods() throws SQLException, InvocationTargetException, IllegalAccessException {AdminDao addressDao new AdminDaoImpl();ListProduct productList addressDao.selectAllGoods();return productList;}Overridepublic ListUser getAllUser() throws SQLException {AdminDao addressDao new AdminDaoImpl();ListUser users addressDao.selectAllUser();return users;}Overridepublic void deleteuserByuid(String uid) throws SQLException {AdminDao addressDao new AdminDaoImpl();addressDao.deleteuserByuid(uid);}}Web层对应AdminController.java的内容 package com.itqf.controller;import com.google.gson.Gson; import com.itqf.entity.Product; import com.itqf.entity.User; import com.itqf.service.AdminService; import com.itqf.service.UserService; import com.itqf.service.impl.AdminServiceImpl; import com.itqf.service.impl.UserServiceImpl; import com.itqf.utils.Constants;import javax.servlet.ServletException; import javax.servlet.annotation.MultipartConfig; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.math.BigDecimal; import java.sql.SQLException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.List;/** * Admin模块的controller */ MultipartConfig( maxFileSize 1024 * 1024 * 5, // 最大文件大小限制为5MB maxRequestSize 1024 * 1024 * 10 // 最大请求大小限制为10MB ) WebServlet(/admin/admin) public class AdminController extends BaseServlet {public String login(HttpServletRequest request, HttpServletResponse response) throws SQLException {//1.获取请求参数用户名密码验证码String username request.getParameter(username);String password request.getParameter(password);//3.调用业务逻辑判断账户密码UserService userService new UserServiceImpl();User adminUser userService.login(username, password);//4.响应//adminUser 等于null证明账号或者密码错误//adminUser 不为null 但是user的状态是未激活状态if (adminUser null) {request.setAttribute(tip, 账号或者密码错误);return Constants.FORWARD /admin//login.jsp;}if (adminUser.getUstatus().equals(Constants.USER_NOT_ACTIVE)) {request.setAttribute(tip, 账号未激活);return Constants.FORWARD /admin/login.jsp;}// //把用户放在共享域session中HttpSession session request.getSession();session.setAttribute(admin, adminUser);return Constants.REDIRECT /admin/admin.jsp;}/*** 添加商品** param request* param response* return* throws InvocationTargetException* throws IllegalAccessException* throws SQLException*/public String addGoods(HttpServletRequest request, HttpServletResponse response) throws InvocationTargetException, IllegalAccessException, SQLException, ParseException, ServletException, IOException {SimpleDateFormat sdf new SimpleDateFormat(yyyy-MM-dd);Product product new Product();// 获取单个表单字段的值product.setPname(request.getParameter(pname));product.setTid(Integer.parseInt(request.getParameter(tid)));product.setPtime(sdf.parse(request.getParameter(ptime)));product.setPprice(new BigDecimal(request.getParameter(pprice)));product.setPstate(Integer.parseInt(request.getParameter(pstate)));product.setPinfo(request.getParameter(pinfo));product.setPimage(request.getParameter(pimage));System.out.println(product);//2.调用业务逻辑进行地址添加AdminService adminService new AdminServiceImpl();adminService.updateProduct(product);return Constants.REDIRECT /admin/addGoods.jsp;}/*** 注销登录清空数据跳转到登录页面** param request* param response* return*/public String logOut(HttpServletRequest request, HttpServletResponse response) {//1.清空session中用户数据HttpSession session request.getSession();session.removeAttribute(admin);//3.转发到登录页面request.setAttribute(tip, 注销登录成功);return Constants.FORWARD /admin/login.jsp;}/*** 查看商品** param request* param response* return*/public void showGoods(HttpServletRequest request, HttpServletResponse response) throws SQLException, InvocationTargetException, IllegalAccessException {//2.调用业务逻辑进行地址添加AdminService adminService new AdminServiceImpl();ListProduct allGoods adminService.getAllGoods();//把用户放在共享域session中HttpSession session request.getSession();session.setAttribute(goodsList, allGoods);}/*** 会员信息管理** param request* param response* throws SQLException* throws InvocationTargetException* throws IllegalAccessException*/public void userList(HttpServletRequest request, HttpServletResponse response) throws SQLException, InvocationTargetException, IllegalAccessException, IOException {//2.调用业务逻辑进行地址添加AdminService adminService new AdminServiceImpl();ListUser allGoods adminService.getAllUser();// 将用户列表转换为JSON格式String json new Gson().toJson(allGoods);// 将JSON数据写入响应response.setContentType(application/json);response.setCharacterEncoding(UTF-8);response.getWriter().write(json);}public void deleteUser(HttpServletRequest request, HttpServletResponse response) throws SQLException, InvocationTargetException, IllegalAccessException, IOException {//1.获取请求参数String uid request.getParameter(uid);//2.调用业务逻辑进行地址添加AdminService adminService new AdminServiceImpl();adminService.deleteuserByuid(uid);}}前端页面对应/admin//login.jsp和/admin/admin.jsp的内容 测试过程 用户模块-新用户注册、用户登录、用户退出 商品显示模块-分页显示所有商品、查看单个商品详细信息 购物车模块-加入商品到购物车、修改所购商品数量 订单模块-提交订单并显示订单信息、用户确认后生成正式订单、用户查看历史订单 支付模块-完成在线支付功能 收货地址-管理收货地址 (增删改查) 管理模块-增加、删除、修改、查找会员、订单、商品信息 项目代码来源与下载 代码编写参考自博主千锋教育_JavaWeb毕业设计商城MyShop_Java项目案例可上手 在博主的基础上增加了支付宝支付功能与后台管理功能 我的项目代码及报告的下载链接
http://www.pierceye.com/news/256031/

相关文章:

  • 免费购物网站源码网站开发的论文引言
  • 商城网站开发需要哪些人员本机建的网站打开却很慢
  • 网站建设哪专业学会python做网站
  • vs怎么添加图片做网站地方门户网站管理系统
  • 三亚做网站的公司科技网站推荐
  • 电商网站运维怎么做自己做网站创业
  • seo有哪些网站集团公司网站 案例
  • 传媒大学附近网站建设公司天津市工程建设公众信息网官网
  • 关于网站建设与维护的参考文献家装设计费用多少钱一平方
  • 网站建设与管理专业概述网站建设报价费用是多少
  • asp医院网站源码破解版北京企业做网站报价
  • 个人做电商网站赚钱吗门业网站模板
  • 企业产品微网站收费吗wordpress移服务器改域名
  • 原创文章网站网站建设团队介绍
  • WordPress建站详细过程安康建设网站
  • 仿视频网站开发wordpress下载文件
  • 专业的个人网站建设哪家建筑施工企业专职安全生产管理员
  • 企业网站模板php全球网站排名前100
  • 1688网站可以做全屏吗有哪些网站是织梦做的
  • vue2.0网站开发做网站没有成本的方法
  • 手机网站和app有什么区别流量对网站排名的影响因素
  • 北京全网营销推广公司网站建设以及seo
  • 免费html网站代码骨科医院网站模板
  • 华强方特网站开发辽宁工程技术大学电子信息网
  • 信誉好的网站建设案例微网站后台录入
  • 网站ui界面设计模板WordPress能连接支付端口吗
  • 网站建设与维护ppt模板下载昆明 网站搭建
  • 手机网站建设浩森宇特摄影作品投稿平台
  • 网站类网站开发犯罪吗肇东网站建设云聚达
  • 云南通耀建设工程有限公司网站少儿编程老师需要具备什么条件