北京网站建设公司 蓝纤科技,wordpress如何接入visa支付宝,做网站需要域名,国内购物平台排行榜#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频
1 、功能描述 基于SSM的二手交易管理系统1拥有两种角色
管理员#xff1a;商品管理、订单管理、充值管理、用户管理等用户#xff1a;发布商品、查看闲置、充值账户、查看所有订单、发布求购信息、修…文末查看项目功能视频演示获取源码sql脚本视频导入教程视频
1 、功能描述 基于SSM的二手交易管理系统1拥有两种角色
管理员商品管理、订单管理、充值管理、用户管理等用户发布商品、查看闲置、充值账户、查看所有订单、发布求购信息、修改个人信息、关注列表等
1.1 背景描述 二手交易管理系统是一个基于SSMSpring SpringMVC MyBatis的Web应用程序旨在提供一个方便、高效的平台用于管理二手商品交易。该系统包括用户管理、商品管理、订单管理、支付管理等功能。 系统采用Spring框架作为整体架构通过SpringMVC模块进行请求处理和数据传递使用MyBatis作为持久层框架实现数据的持久化。系统还采用了MySQL数据库进行数据存储并使用Tomcat服务器进行部署。 用户管理模块负责管理用户信息包括用户注册、登录、找回密码等功能。商品管理模块负责管理二手商品信息包括商品的添加、修改、删除等功能。订单管理模块负责管理订单信息包括订单的生成、支付、发货等功能。支付管理模块负责管理支付信息包括支付方式的添加、修改、删除等功能。 该系统具有友好的用户界面和灵活的功能设计可满足不同用户的需求。通过该系统用户可以更加方便地进行二手商品交易提高交易的效率和安全性。
2、项目技术
后端框架SSMSpring、SpringMVC、Mybatis
前端技术Bootstrap、jsp、css、JavaScript、JQuery
2.1 SSM SSMSpringSpringMVCMyBatis是目前比较主流的Java EE企业级框架适用于搭建各种大型的企业级应用系统。其中Spring就像是整个项目中的粘合剂负责装配bean并管理其生命周期实现控制反转IoC的功能。SpringMVC负责拦截用户请求通过DispatcherServlet将请求匹配到相应的Controller并执行。而MyBatis则是对JDBC的封装让数据库底层操作变得透明通过配置文件关联到各实体类的Mapper文件实现了SQL语句映射。
2.2 mysql MySQL是一款Relational Database Management System直译过来的意思就是关系型数据库管理系统MySQL有着它独特的特点这些特点使他成为目前最流行的RDBMS之一MySQL想比与其他数据库如ORACLE、DB2等它属于一款体积小、速度快的数据库重点是它符合本次毕业设计的真实租赁环境拥有成本低开发源码这些特点这也是选择它的主要原因。
3、开发环境
JAVA版本JDK1.8IDE类型IDEA、Eclipse都可运行tomcat版本Tomcat 7-10版本均可数据库类型MySql5.x和8.x版本都可maven项目否硬件环境Windows 或者 Mac OS
4、功能截图视频演示文档目录
4.1 登录 4.2 前端模块 4.3 用户模块 4.4 管理员模块 4.4 文档目录 5 、核心代码实现
5.1 配置代码
?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:phttp://www.springframework.org/schema/pxmlns:aophttp://www.springframework.org/schema/aopxmlns:contexthttp://www.springframework.org/schema/contextxmlns:jeehttp://www.springframework.org/schema/jeexmlns:txhttp://www.springframework.org/schema/txxsi:schemaLocationhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsdhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsdhttp://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.0.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd!-- 加载数据库参数 --context:property-placeholder locationclasspath:conf/jdbc.properties/context:component-scan base-packagecom.ldu.service.impl/bean id dataSource class com.alibaba.druid.pool.DruidDataSource destroy-method close!-- 数据库基本信息配置 --property name url value ${druid.url} /property name username value ${druid.username} /property name password value ${druid.password} /property name driverClassName value ${druid.driverClassName} /property name filters value ${druid.filters} /!-- 最大并发连接数 --property name maxActive value ${druid.maxActive} /!-- 初始化连接数量 --property name initialSize value ${druid.initialSize} /!-- 配置获取连接等待超时的时间 --property name maxWait value ${druid.maxWait} /!-- 最小空闲连接数 --property name minIdle value ${druid.minIdle} /!-- 配置间隔多久才进行一次检测检测需要关闭的空闲连接单位是毫秒 --property name timeBetweenEvictionRunsMillis value ${druid.timeBetweenEvictionRunsMillis} /!-- 配置一个连接在池中最小生存的时间单位是毫秒 --property name minEvictableIdleTimeMillis value ${druid.minEvictableIdleTimeMillis} /property name validationQuery value ${druid.validationQuery} /property name testWhileIdle value ${druid.testWhileIdle} /property name testOnBorrow value ${druid.testOnBorrow} /property name testOnReturn value ${druid.testOnReturn} /property name maxOpenPreparedStatements value ${druid.maxOpenPreparedStatements} /!-- 打开 removeAbandoned 功能 --property name removeAbandoned value ${druid.removeAbandoned} /!-- 1800 秒也就是 30 分钟 --property name removeAbandonedTimeout value ${druid.removeAbandonedTimeout} /!-- 关闭 abanded 连接时输出错误日志 --property name logAbandoned value ${druid.logAbandoned} //bean!-- 配置MyBatis的sqlSessionFactory --bean idsqlSessionFactory classorg.mybatis.spring.SqlSessionFactoryBeanproperty namedataSource refdataSource/propertyproperty nameconfigLocation valueclasspath:conf/mybatis-config.xml/propertyproperty namemapperLocations valueclasspath:mapper/*.xml/property/bean!-- Mapper接口所在包名Spring会自动查找其下的Mapper --bean classorg.mybatis.spring.mapper.MapperScannerConfigurerproperty namebasePackage valuecom.ldu.dao/propertyproperty namesqlSessionFactoryBeanName valuesqlSessionFactory/property/bean!-- 配置transactionManager事务管理器 --bean idtransactionManager classorg.springframework.jdbc.datasource.DataSourceTransactionManagerproperty namedataSource refdataSource/property/bean!-- 配置事物通知属性 --tx:advice idtxAdvice transaction-managertransactionManager!-- 定义事物传播特性 --tx:attributestx:method nameinsert propagationREQUIRED/tx:method nameupdate* propagationREQUIRED /tx:method nameedit* propagationREQUIRED /tx:method namesave* propagationREQUIRED /tx:method nameadd* propagationREQUIRED /tx:method namenew* propagationREQUIRED /tx:method nameset* propagationREQUIRED /tx:method nameremove* propagationREQUIRED /tx:method namedelete* propagationREQUIRED /tx:method namechange* propagationREQUIRED /tx:method namecheck* propagationREQUIRED /tx:method nameget* propagationREQUIRED read-onlytrue /tx:method namefind* propagationREQUIRED read-onlytrue /tx:method nameload* propagationREQUIRED read-onlytrue /tx:method name* propagationREQUIRED read-onlytrue //tx:attributes/tx:advice!-- 配置事物切面 --aop:configaop:pointcut expressionexecution(* com.ldu.service.*.*(..)) idserviceOperation/aop:advisor advice-reftxAdvice pointcut-refserviceOperation//aop:config
/beans5.2 用户核心代码
package com.ldu.controller;import com.ldu.pojo.Focus;
import com.ldu.pojo.Goods;
import com.ldu.pojo.GoodsExtend;
import com.ldu.pojo.Image;
import com.ldu.pojo.Notice;
import com.ldu.pojo.NoticeExtend;
import com.ldu.pojo.Purse;
import com.ldu.pojo.User;
import com.ldu.service.FocusService;
import com.ldu.service.GoodsService;
import com.ldu.service.ImageService;
import com.ldu.service.NoticeService;
import com.ldu.service.PurseService;
import com.ldu.service.UserService;
import com.ldu.util.DateUtil;
import com.ldu.util.MD5;import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;Controller
RequestMapping(value /user)
public class UserController {Resourceprivate UserService userService;Resourceprivate GoodsService goodsService;Resourceprivate ImageService imageService;Resourceprivate FocusService focusService;Resourceprivate PurseService purseService;Resourceprivate NoticeService noticeService;/*** 用户注册* * param user1* return*/RequestMapping(value /addUser)public String addUser(HttpServletRequest request, ModelAttribute(user) User user1) {String url request.getHeader(Referer);User user userService.getUserByPhone(user1.getPhone());if (user null) {// 检测该用户是否已经注册String t DateUtil.getNowDate();// 对密码进行MD5加密String str MD5.md5(user1.getPassword());user1.setCreateAt(t);// 创建开始时间user1.setPassword(str);user1.setGoodsNum(0);user1.setStatus((byte) 1);//初始正常状态user1.setPower(100);userService.addUser(user1);purseService.addPurse(user1.getId());// 注册的时候同时生成钱包}return redirect: url;}/*** 注册验证账号* param request* return*/RequestMapping(value /register,method RequestMethod.POST)ResponseBodypublic String register(HttpServletRequest request){String phonerequest.getParameter(phone);User user userService.getUserByPhone(phone);if(usernull) {return {\success\:true,\flag\:false};//用户存在注册失败}else {return {\success\:true,\flag\:true};//用户不存在可以注册}}/*** 登陆验证密码* param request* return*//*RequestMapping(value /password,method RequestMethod.POST)ResponseBodypublic String password(HttpServletRequest request){String phonerequest.getParameter(phone);String passwordrequest.getParameter(password);if((phonenull||phone)(passwordnull||password)) {return {\success\:false,\flag\:true};}else {User user userService.getUserByPhone(phone);if(usernull) {return {\success\:false,\flag\:false};//账号错误}String pwd MD5.md5(password);if (pwd.equals(user.getPassword())) {return {\success\:true,\flag\:false};//密码正确}else {return {\success\:true,\flag\:true};//密码错误}}}*//*** 验证登录* param request* param user* param modelMap* return*/RequestMapping(value /login)public ModelAndView loginValidate(HttpServletRequest request, HttpServletResponse response, User user,ModelMap modelMap) {User cur_user userService.getUserByPhone(user.getPhone());String url request.getHeader(Referer);if (cur_user ! null) {String pwd MD5.md5(user.getPassword());if (pwd.equals(cur_user.getPassword())) {if(cur_user.getStatus()1) {request.getSession().setAttribute(cur_user, cur_user);return new ModelAndView(redirect: url);}}}return new ModelAndView(redirect: url);}/*** 更改用户名* * param request* param user* param modelMap* return*/RequestMapping(value /changeName)public ModelAndView changeName(HttpServletRequest request, User user, ModelMap modelMap) {String url request.getHeader(Referer);// 从session中获取出当前用户User cur_user (User) request.getSession().getAttribute(cur_user);cur_user.setUsername(user.getUsername());// 更改当前用户的用户名userService.updateUserName(cur_user);// 执行修改操作request.getSession().setAttribute(cur_user, cur_user);// 修改session值return new ModelAndView(redirect: url);}/*** 完善或修改信息* * param request* param user* param modelMap* return*/RequestMapping(value /updateInfo)public ModelAndView updateInfo(HttpServletRequest request, User user, ModelMap modelMap) {// 从session中获取出当前用户User cur_user (User) request.getSession().getAttribute(cur_user);cur_user.setUsername(user.getUsername());cur_user.setQq(user.getQq());userService.updateUserName(cur_user);// 执行修改操作request.getSession().setAttribute(cur_user, cur_user);// 修改session值return new ModelAndView(redirect:/user/basic);}/*** 用户退出* * param request* return*/RequestMapping(value /logout)public String logout(HttpServletRequest request) {request.getSession().setAttribute(cur_user, null);return redirect:/goods/homeGoods;}/*** 个人中心* * return*/RequestMapping(value /home)public ModelAndView home(HttpServletRequest request) {ModelAndView mv new ModelAndView();User cur_user (User) request.getSession().getAttribute(cur_user);Integer userId cur_user.getId();int size5;Purse myPurse purseService.getPurseByUserId(userId);ListUser usersuserService.getUserOrderByDate(size);ListNotice noticenoticeService.getNoticeList();mv.addObject(notice, notice);mv.addObject(myPurse, myPurse);mv.addObject(users, users);mv.setViewName(/user/home);return mv;}/*** 个人信息设置* * return*/RequestMapping(value /basic)public ModelAndView basic(HttpServletRequest request) {User cur_user (User) request.getSession().getAttribute(cur_user);Integer userId cur_user.getId();Purse myPurse purseService.getPurseByUserId(userId);ModelAndView mv new ModelAndView();mv.addObject(myPurse, myPurse);mv.setViewName(/user/basic);return mv;}/*** 我的闲置 查询出所有的用户商品以及商品对应的图片* * return 返回的model为 goodsAndImage对象,该对象中包含goods 和 images参考相应的类*/RequestMapping(value /allGoods)public ModelAndView goods(HttpServletRequest request) {User cur_user (User) request.getSession().getAttribute(cur_user);Integer userId cur_user.getId();ListGoods goodsList goodsService.getGoodsByUserId(userId);ListGoodsExtend goodsAndImage new ArrayListGoodsExtend();for (int i 0; i goodsList.size(); i) {// 将用户信息和image信息封装到GoodsExtend类中传给前台GoodsExtend goodsExtend new GoodsExtend();Goods goods goodsList.get(i);ListImage images imageService.getImagesByGoodsPrimaryKey(goods.getId());goodsExtend.setGoods(goods);goodsExtend.setImages(images);goodsAndImage.add(i, goodsExtend);}Purse myPurse purseService.getPurseByUserId(userId);ModelAndView mv new ModelAndView();mv.addObject(goodsAndImage, goodsAndImage);mv.setViewName(/user/goods);mv.addObject(myPurse, myPurse);return mv;}/*** 我的关注 查询出所有的用户商品以及商品对应的图片* * return 返回的model为 goodsAndImage对象,该对象中包含goods 和 images参考相应的类*/RequestMapping(value /allFocus)public ModelAndView focus(HttpServletRequest request) {User cur_user (User) request.getSession().getAttribute(cur_user);Integer userId cur_user.getId();ListFocus focusList focusService.getFocusByUserId(userId);ListGoodsExtend goodsAndImage new ArrayListGoodsExtend();for (int i 0; i focusList.size(); i) {// 将用户信息和image信息封装到GoodsExtend类中传给前台GoodsExtend goodsExtend new GoodsExtend();Focus focus focusList.get(i);Goods goods goodsService.getGoodsByPrimaryKey(focus.getGoodsId());ListImage images imageService.getImagesByGoodsPrimaryKey(focus.getGoodsId());goodsExtend.setGoods(goods);goodsExtend.setImages(images);goodsAndImage.add(i, goodsExtend);}Purse myPurse purseService.getPurseByUserId(userId);ModelAndView mv new ModelAndView();mv.addObject(goodsAndImage, goodsAndImage);mv.addObject(myPurse, myPurse);mv.setViewName(/user/focus);return mv;}/*** 删除我的关注* return*/RequestMapping(value /deleteFocus/{id})public String deleteFocus(HttpServletRequest request, PathVariable(id) Integer goods_id) {User cur_user (User) request.getSession().getAttribute(cur_user);Integer user_id cur_user.getId();focusService.deleteFocusByUserIdAndGoodsId(goods_id, user_id);return redirect:/user/allFocus;}/*** 添加我的关注* * return*/RequestMapping(value /addFocus/{id})public String addFocus(HttpServletRequest request, PathVariable(id) Integer goods_id) {User cur_user (User) request.getSession().getAttribute(cur_user);Integer user_id cur_user.getId();//首先获取用户所有的关注列表ListFocus focusfocusService.getFocusByUserId(user_id);//若关注列表为空则直接添加关注if(focus.isEmpty()) {focusService.addFocusByUserIdAndId(goods_id, user_id);return redirect:/user/allFocus;}//遍历所有的关注列表for (Focus myfocus : focus) {int goodsIdmyfocus.getGoodsId();//若该商品已经被关注则直接返回if(goodsId goods_id.intValue()) {return redirect:/user/allFocus;}}focusService.addFocusByUserIdAndId(goods_id, user_id);return redirect:/user/allFocus;}/*** 我的钱包* * return 返回的model为 goodsAndImage对象*/RequestMapping(value /myPurse)public ModelAndView getMoney(HttpServletRequest request) {User cur_user (User) request.getSession().getAttribute(cur_user);Integer user_id cur_user.getId();Purse purse purseService.getPurseByUserId(user_id);ModelAndView mv new ModelAndView();mv.addObject(myPurse, purse);mv.setViewName(/user/purse);return mv;}/*** 充值与提现 根据传过来的两个值进行判断是充值还是提现* * return 返回的model为 goodsAndImage对象*/RequestMapping(value /updatePurse)public String updatePurse(HttpServletRequest request, Purse purse) {User cur_user (User) request.getSession().getAttribute(cur_user);Integer user_id cur_user.getId();purse.setUserId(user_id);purse.setState(0);if (purse.getRecharge() ! null) {purseService.updatePurse(purse);}if (purse.getWithdrawals() ! null) {purseService.updatePurse(purse);}return redirect:/user/myPurse;}RequestMapping(value /insertSelective,method RequestMethod.POST)ResponseBodypublic String insertSelective(HttpServletRequest request){String contextrequest.getParameter(context);User cur_user (User) request.getSession().getAttribute(cur_user);Notice noticenew Notice();notice.setContext(context);Date dt new Date(); SimpleDateFormat sdf new SimpleDateFormat(yyyy-MM-dd HH:mm:ss);notice.setCreateAt(sdf.format(dt));notice.setStatus((byte) 0);notice.setUser(cur_user);if(contextnull||context) {return {\success\:false,\msg\:\发布失败请输入内容!\};}try {noticeService.insertSelective(notice);} catch (Exception e) {return {\success\:false,\msg\:\发布失败!\};}return {\success\:true,\msg\:\发布成功!\};}}
6 、功能视频演示 基于SSM的二手物品交易系统 7 、 获取方式 大家点赞、收藏、关注、评论啦 获取联系方式后台回复关键词二手 文章转载自: http://www.morning.kxbry.cn.gov.cn.kxbry.cn http://www.morning.nqwz.cn.gov.cn.nqwz.cn http://www.morning.qmnhw.cn.gov.cn.qmnhw.cn http://www.morning.ydflc.cn.gov.cn.ydflc.cn http://www.morning.wtyqs.cn.gov.cn.wtyqs.cn http://www.morning.lkmks.cn.gov.cn.lkmks.cn http://www.morning.ghqyr.cn.gov.cn.ghqyr.cn http://www.morning.lfqnk.cn.gov.cn.lfqnk.cn http://www.morning.cnxpm.cn.gov.cn.cnxpm.cn http://www.morning.pznqt.cn.gov.cn.pznqt.cn http://www.morning.zmtrk.cn.gov.cn.zmtrk.cn http://www.morning.gtdf.cn.gov.cn.gtdf.cn http://www.morning.hlxpz.cn.gov.cn.hlxpz.cn http://www.morning.tzjqm.cn.gov.cn.tzjqm.cn http://www.morning.rlxnc.cn.gov.cn.rlxnc.cn http://www.morning.btjyp.cn.gov.cn.btjyp.cn http://www.morning.tmrjb.cn.gov.cn.tmrjb.cn http://www.morning.skwwj.cn.gov.cn.skwwj.cn http://www.morning.wschl.cn.gov.cn.wschl.cn http://www.morning.fwcnx.cn.gov.cn.fwcnx.cn http://www.morning.zypnt.cn.gov.cn.zypnt.cn http://www.morning.wwthz.cn.gov.cn.wwthz.cn http://www.morning.fqpyj.cn.gov.cn.fqpyj.cn http://www.morning.nzfjm.cn.gov.cn.nzfjm.cn http://www.morning.ktcrr.cn.gov.cn.ktcrr.cn http://www.morning.sjwiki.com.gov.cn.sjwiki.com http://www.morning.kaakyy.com.gov.cn.kaakyy.com http://www.morning.plqhb.cn.gov.cn.plqhb.cn http://www.morning.bmqls.cn.gov.cn.bmqls.cn http://www.morning.ppqjh.cn.gov.cn.ppqjh.cn http://www.morning.kmqms.cn.gov.cn.kmqms.cn http://www.morning.gcbhh.cn.gov.cn.gcbhh.cn http://www.morning.wrtbx.cn.gov.cn.wrtbx.cn http://www.morning.ztqj.cn.gov.cn.ztqj.cn http://www.morning.rbyz.cn.gov.cn.rbyz.cn http://www.morning.lpnb.cn.gov.cn.lpnb.cn http://www.morning.gzzxlp.com.gov.cn.gzzxlp.com http://www.morning.sfqtf.cn.gov.cn.sfqtf.cn http://www.morning.pbsqr.cn.gov.cn.pbsqr.cn http://www.morning.bfkrf.cn.gov.cn.bfkrf.cn http://www.morning.cokcb.cn.gov.cn.cokcb.cn http://www.morning.nqcwz.cn.gov.cn.nqcwz.cn http://www.morning.sryyt.cn.gov.cn.sryyt.cn http://www.morning.weiwt.com.gov.cn.weiwt.com http://www.morning.zylzk.cn.gov.cn.zylzk.cn http://www.morning.dgpxp.cn.gov.cn.dgpxp.cn http://www.morning.rxfjg.cn.gov.cn.rxfjg.cn http://www.morning.kmkpm.cn.gov.cn.kmkpm.cn http://www.morning.hrrmb.cn.gov.cn.hrrmb.cn http://www.morning.xfmwk.cn.gov.cn.xfmwk.cn http://www.morning.csgwd.cn.gov.cn.csgwd.cn http://www.morning.kdbcx.cn.gov.cn.kdbcx.cn http://www.morning.pzrnf.cn.gov.cn.pzrnf.cn http://www.morning.kszkm.cn.gov.cn.kszkm.cn http://www.morning.zdhxm.com.gov.cn.zdhxm.com http://www.morning.lnyds.cn.gov.cn.lnyds.cn http://www.morning.trwkz.cn.gov.cn.trwkz.cn http://www.morning.jtmrx.cn.gov.cn.jtmrx.cn http://www.morning.bmbnc.cn.gov.cn.bmbnc.cn http://www.morning.rwbx.cn.gov.cn.rwbx.cn http://www.morning.nqlcj.cn.gov.cn.nqlcj.cn http://www.morning.cljmx.cn.gov.cn.cljmx.cn http://www.morning.lddpj.cn.gov.cn.lddpj.cn http://www.morning.kpzbf.cn.gov.cn.kpzbf.cn http://www.morning.trzmb.cn.gov.cn.trzmb.cn http://www.morning.zdmlt.cn.gov.cn.zdmlt.cn http://www.morning.gryzk.cn.gov.cn.gryzk.cn http://www.morning.trrhj.cn.gov.cn.trrhj.cn http://www.morning.rywr.cn.gov.cn.rywr.cn http://www.morning.tfpqd.cn.gov.cn.tfpqd.cn http://www.morning.fzqfb.cn.gov.cn.fzqfb.cn http://www.morning.xtxp.cn.gov.cn.xtxp.cn http://www.morning.xmjzn.cn.gov.cn.xmjzn.cn http://www.morning.drtgt.cn.gov.cn.drtgt.cn http://www.morning.sfdsn.cn.gov.cn.sfdsn.cn http://www.morning.qttg.cn.gov.cn.qttg.cn http://www.morning.sjwzl.cn.gov.cn.sjwzl.cn http://www.morning.rjjjk.cn.gov.cn.rjjjk.cn http://www.morning.fnwny.cn.gov.cn.fnwny.cn http://www.morning.nsjpz.cn.gov.cn.nsjpz.cn