大家好,我是全微毕设团队的创始人,本团队擅长JAVA(SSM,SSH,SPRINGBOOT)、PYTHON、PHP、C#、安卓等多项技术。
今天将为大家分析一个网上拍卖系统(随着Internet技术的发展和互联网的日益普及以及电子商务的发展,电子商务活动日益繁荣,C2C模式的巨大优势将使它成为未来电子商务领域重要的一部分。网上拍卖迅速成为一种非常活跃的C2C电子商务模式。详细介绍了JSP+Servlet+JavaBean的三层架构模式在电子商务平台上应用的相关技术。该系统经实践证明是稳定、安全和高效的,具有较高的实用价值。),该项目使用框架为SSM(MYECLIPSE),选用开发工具为MYECLIPSE。网上拍卖系统为一个 后台项目。
为了完成该系统,我们首先需要对该系统进行需求分析。一个网上拍卖系统应包含用户角色有管理员、买家、卖家。为了能让用户顺利登陆系统完成相关操作,需要为每种登陆角色设置账户和密码字段。
为了完成系统的功能需要为卖家设置商品表,记录商品信息。在商品表中定义了两者的关联关系,其中商品的卖家名字与卖家的mingzi字段对应、商品的卖家id与卖家的id字段对应
。
总结得出该系统所有数据为:管理员(admin)、买家(maijia)、卖家(chushouzhe)、商品(shangping)
管理员表
字段名 | 类型 | 属性 | 描述 id | INT(11) | PRIMARY KEY | 管理员id username | VARCHAR(255) | | 账号 password | VARCHAR(255) | | 密码
买家表
字段名 | 类型 | 属性 | 描述 id | INT(11) | PRIMARY KEY | 买家id mingzi | VARCHAR(255) | | 名字 username | VARCHAR(255) | | 账号 password | VARCHAR(255) | | 密码 yue | VARCHAR(255) | | 余额
卖家表
字段名 | 类型 | 属性 | 描述 id | INT(11) | PRIMARY KEY | 卖家id mingzi | VARCHAR(255) | | 名字 username | VARCHAR(255) | | 账号 password | VARCHAR(255) | | 密码 nianling | VARCHAR(255) | | 年龄 xingbie | VARCHAR(255) | | 性别 yue | VARCHAR(255) | | 余额
商品表
字段名 | 类型 | 属性 | 描述 id | INT(11) | PRIMARY KEY | 商品id mingcheng | VARCHAR(255) | | 名称 jiage | VARCHAR(255) | | 价格 chushouzhe | VARCHAR(255) | | 卖家名字 chushouzheid | VARCHAR(255) | | 卖家id shuoming | VARCHAR(255) | | 说明
sql建表语句
SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- ---------------------------- -- Table structure for ggwangshangpaimai -- ---------------------------- DROP TABLE IF EXISTS `t_admin`; CREATE TABLE `t_admin` (`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '管理员id',`username` VARCHAR(255) DEFAULT NULL COMMENT '账号',`password` VARCHAR(255) DEFAULT NULL COMMENT '密码',PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='管理员'; -- ---------------------------- DROP TABLE IF EXISTS `t_maijia`; CREATE TABLE `t_maijia` (`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '买家id',`mingzi` VARCHAR(255) DEFAULT NULL COMMENT '名字',`username` VARCHAR(255) DEFAULT NULL COMMENT '账号',`password` VARCHAR(255) DEFAULT NULL COMMENT '密码',`yue` VARCHAR(255) DEFAULT NULL COMMENT '余额',PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='买家'; -- ---------------------------- DROP TABLE IF EXISTS `t_chushouzhe`; CREATE TABLE `t_chushouzhe` (`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '卖家id',`mingzi` VARCHAR(255) DEFAULT NULL COMMENT '名字',`username` VARCHAR(255) DEFAULT NULL COMMENT '账号',`password` VARCHAR(255) DEFAULT NULL COMMENT '密码',`nianling` VARCHAR(255) DEFAULT NULL COMMENT '年龄',`xingbie` VARCHAR(255) DEFAULT NULL COMMENT '性别',`yue` VARCHAR(255) DEFAULT NULL COMMENT '余额',PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='卖家'; -- ---------------------------- DROP TABLE IF EXISTS `t_shangping`; CREATE TABLE `t_shangping` (`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '商品id',`mingcheng` VARCHAR(255) DEFAULT NULL COMMENT '名称',`jiage` VARCHAR(255) DEFAULT NULL COMMENT '价格',`chushouzhe` VARCHAR(255) DEFAULT NULL COMMENT '卖家名字',`chushouzheid` INT(11) DEFAULT NULL COMMENT '卖家id',`shuoming` VARCHAR(5000) DEFAULT NULL COMMENT '说明',PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='商品';
商品处理控制层
package org.mypro.front; import java.io.File; import java.io.IOException; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Collections; import java.util.Date; import java.util.List; import javax.jms.Session; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.mypro.dao.ShangpingMapper; import org.mypro.entity.Shangping; import org.mypro.entity.ShangpingExample; import org.mypro.entity.Chushouzhe; import org.mypro.entity.ChushouzheExample; import org.mypro.dao.ChushouzheMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.multipart.MultipartFile; @Controller @RequestMapping(value = "/") public class ShangpingController { private static final Log logger = LogFactory.getLog(ShangpingController.class); @Autowired private ShangpingMapper shangpingdao; // 定义chushouzhedao参数 @Autowired private ChushouzheMapper chushouzhedao; //定义方法tianjiashangping,响应页面tianjiashangping请求 @RequestMapping(value = "tianjiashangping") public String tianjiashangping(HttpServletRequest request, HttpServletResponse response,HttpSession session,String backurl) { logger.debug("ShangpingController.tianjiashangping ......"); // 定义 example1为 ChushouzheExample的实例 ChushouzheExample example1 = new ChushouzheExample(); List chushouzheall = chushouzhedao.selectByExample(example1); request.setAttribute("chushouzheall", chushouzheall); if(backurl != null && backurl.indexOf("tianjiashangping.action") == -1){ return "forward:/" + backurl; } return "tianjiashangping"; } @RequestMapping(value = "tianjiashangpingact") public String tianjiashangpingact(HttpServletRequest request,HttpSession session, HttpServletResponse response,Shangping shangping,String backurl) throws IOException { logger.debug("ShangpingController.tianjiashangpingact ......"); shangpingdao.insert(shangping); request.setAttribute("message", "添加商品成功"); if(backurl != null && backurl.indexOf("tianjiashangpingact.action") == -1){ return "forward:/" + backurl; } //返回tianjiashangping方法 return "forward:/tianjiashangping.action"; } //定义shangpingguanli方法响应页面请求 @RequestMapping(value = "shangpingguanli") public String shangpingguanli(HttpServletRequest request,HttpSession session, HttpServletResponse response,String backurl) { logger.debug("ShangpingController.shangpingguanli ......"); ShangpingExample example = new ShangpingExample(); List shangpingall = shangpingdao.selectByExample(example); request.setAttribute("shangpingall", shangpingall); if(backurl != null && backurl.indexOf("shangpingguanli.action") == -1){ return "forward:/" + backurl; } return "shangpingguanli"; } // 定义 shangpingchakan方法 @RequestMapping(value = "shangpingchakan") public String shangpingchakan(HttpServletRequest request,HttpSession session, HttpServletResponse response,String backurl) { logger.debug("ShangpingController.shangpingchakan ......"); ShangpingExample example = new ShangpingExample(); List shangpingall = shangpingdao.selectByExample(example); request.setAttribute("shangpingall", shangpingall); if(backurl != null && backurl.indexOf("shangpingchakan.action") == -1){ return "forward:/" + backurl; } return "shangpingchakan"; } // 定义 xiugaishangping方法 @RequestMapping(value = "xiugaishangping") public String xiugaishangping(HttpServletRequest request, HttpServletResponse response,HttpSession session,int id,String backurl){ logger.debug("ShangpingController.xiugaishangping ......"); Shangping shangping = shangpingdao.selectByPrimaryKey(id); // 定义 example1为 ChushouzheExample的实例 ChushouzheExample example1 = new ChushouzheExample(); List chushouzheall = chushouzhedao.selectByExample(example1); request.setAttribute("chushouzheall", chushouzheall); request.setAttribute("shangping", shangping); if(backurl != null && backurl.indexOf("xiugaishangping.action") == -1){ return "forward:/" + backurl; } return "xiugaishangping"; } // 定义xiugaishangpingact处理商品修改 @RequestMapping(value = "xiugaishangpingact") public String xiugaishangpingact(HttpServletRequest request, HttpServletResponse response,Shangping shangping,HttpSession session,String backurl) throws IOException { logger.debug("ShangpingController.xiugaishangpingact ......"); shangpingdao.updateByPrimaryKeySelective(shangping); request.setAttribute("message", "修改商品信息成功"); if(backurl != null && backurl.indexOf("xiugaishangpingact.action") == -1){ return "forward:/" + backurl; } return "forward:/shangpingguanli.action"; } // 定义shanchushangping,处理删除商品 @RequestMapping(value = "shanchushangping") public String shanchushangping(HttpServletRequest request, HttpServletResponse response,HttpSession session,int id,String backurl){ logger.debug("ShangpingController.shanchushangping ......"); shangpingdao.deleteByPrimaryKey(id); request.setAttribute("message", "删除商品成功"); if(backurl != null && backurl.indexOf("shanchushangping.action") == -1){ return "forward:/" + backurl; } return "forward:/shangpingguanli.action"; } // 定义sousuoshangping方法,处理搜索操作 @RequestMapping(value = "sousuoshangping") public String sousuoshangping(HttpServletRequest request, HttpServletResponse response,HttpSession session,String search,String backurl) {logger. debug("ShangpingController.sousuoshangping ......");ShangpingExample example = new ShangpingExample();ShangpingExample. Criteria criteria = example.createCriteria(); if(search != null){criteria. andMingchengLike("%" + search + "%"); } List shangpingall = shangpingdao.selectByExample(example);request. setAttribute("shangpingall", shangpingall); if(backurl != null && backurl.indexOf("sousuoshangping.action") == -1){ return "forward:/" + backurl; } return "sousuoshangping"; } // 定义ShangpingpinglunMapper@RequestMapping (value = "shangpingxiangqing") public String shangpingxiangqing(HttpServletRequest request,HttpSession session, HttpServletResponse response,int id,String backurl) {logger. debug("ShangpingController.shangpingxiangqing ......");Shangping shangping = shangpingdao.selectByPrimaryKey(id);request. setAttribute("shangping", shangping); if(backurl != null && backurl.indexOf("shangpingxiangqing.action") == -1){ return "forward:/" + backurl; } return "shangpingxiangqing"; } // 上传文件图片等 public String uploadUtile(MultipartFile file, HttpServletRequest request) throws IOException { // 根据当前时间生成时间字符串 SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSS"); String res = sdf.format(new Date()); // uploads文件夹位置 String rootPath = request.getSession().getServletContext().getRealPath("resource/uploads/"); // 原始名称 String originalFileName = file.getOriginalFilename(); // 新文件名 String newFileName = "sliver" + res + originalFileName.substring(originalFileName.lastIndexOf(".")); // 创建年月文件夹 Calendar date = Calendar.getInstance(); File dateDirs = new File(date.get(Calendar.YEAR) + File.separator + (date.get(Calendar.MONTH)+1)); // 新文件 File newFile = new File(rootPath + File.separator + dateDirs + File.separator + newFileName); // 判断目标文件所在目录是否存在 if( !newFile.getParentFile().exists()) { // 如果目标文件所在的目录不存在,则创建父目录newFile. getParentFile().mkdirs(); } System.out.println(newFile); // 将内存中的数据写入磁盘file. transferTo(newFile); // 完整的url String fileUrl = date.get(Calendar.YEAR) + "/" + (date.get(Calendar.MONTH)+1) + "/" + newFileName; return fileUrl; }}