源码获取:博客首页 "资源" 里下载!

一、项目简述(附带IW文档)

功能: 前台: * 用户模块 * 分类模块 * 图书模块 * 购物车模块 * 订单模块

后台: * 管理员模块 * 分类管理模块 * 图书管理模块 * 订单模块

二、项目运行

环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持)

项目技术: JSP + C3P0+ Servlert + html+ css + JavaScript + JQuery + Ajax + Fileupload等等。

用户信息控制层:

@Controller
@RequestMapping("/user")
public class UserController {@Autowiredprivate IUserService userService;@Autowiredprivate IMailService mailService;@Autowiredprivate IStoreService storeService;@Value("${mail.fromMail.addr}")private String from;@Value("${my.ip}")private String ip;private final String USERNAME_PASSWORD_NOT_MATCH = "用户名或密码错误";private final String USERNAME_CANNOT_NULL = "用户名不能为空";@RequestMapping("/login")public String login(@RequestParam(value = "username", required = false) String username,@RequestParam(value = "password", required = false) String password,HttpServletRequest request, Model model) {if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password)) {return "login";}//未认证的用户Subject userSubject = SecurityUtils.getSubject();if (!userSubject.isAuthenticated()) {UsernamePasswordToken token = new UsernamePasswordToken(username, password);token.setRememberMe(false);//禁止记住我功能try {//登录成功userSubject.login(token);User loginUser = (User) userSubject.getPrincipal();request.getSession().setAttribute("loginUser", loginUser);Store store = storeService.findStoreByUserId(loginUser.getUserId());request.getSession().setAttribute("loginStore", store);SavedRequest savedRequest = WebUtils.getSavedRequest(request);String url = "/";if (savedRequest != null) {url = savedRequest.getRequestUrl();if(url.contains(request.getContextPath())){url = url.replace(request.getContextPath(),"");}}if(StringUtils.isEmpty(url) || url.equals("/favicon.ico")){url = "/";}return "redirect:" + url;} catch (UnknownAccountException | IncorrectCredentialsException uae) {model.addAttribute("loginMsg", USERNAME_PASSWORD_NOT_MATCH);return "login";} catch (LockedAccountException lae) {model.addAttribute("loginMsg", "账户已被冻结!");return "login";} catch (AuthenticationException ae) {model.addAttribute("loginMsg", "登录失败!");return "login";}} else {//用户已经登录return "redirect:/index";}}@RequestMapping("/info")public String personInfo(){return "user_info";}/* @RequestMapping("/login1")public String login1(@RequestParam(value = "username", required = false) String username,@RequestParam(value = "password", required = false) String password,Model model, HttpServletRequest request) {if (StringUtils.isEmpty(username)) {model.addAttribute("loginMsg", USERNAME_CANNOT_NULL);return "login";}if (StringUtils.isEmpty(password)) {model.addAttribute("loginMsg", "密码不能为空");return "login";}BSResult<User> bsResult = userService.login(username, password);//登录校验失败if (bsResult.getData() == null) {model.addAttribute("loginMsg", bsResult.getMessage());return "login";}//登录校验成功,重定向到首页User user = bsResult.getData();//置密码为空user.setPassword("");request.getSession().setAttribute("user", user);return "redirect:/";}*///shiro框架帮我们注销@RequestMapping("/logout")@CacheEvict(cacheNames="authorizationCache",allEntries = true)public String logout() {SecurityUtils.getSubject().logout();return "redirect:/page/login";}/*** 注册 检验用户名是否存在** @param username* @return*/@RequestMapping("/checkUserExist")@ResponseBodypublic BSResult checkUserExist(String username) {if (StringUtils.isEmpty(username)) {return BSResultUtil.build(200, USERNAME_CANNOT_NULL, false);}return userService.checkUserExistByUsername(username);}/*** 注册,发激活邮箱** @param user* @return*/@RequestMapping("/register")public String register(User user, Model model) {BSResult isExist = checkUserExist(user.getUsername());//尽管前台页面已经用ajax判断用户名是否存在,// 为了防止用户不是点击前台按钮提交表单造成的错误,后台也需要判断if ((Boolean) isExist.getData()) {user.setActive("1");BSResult bsResult = userService.saveUser(user);//获得未激活的用户User userNotActive = (User) bsResult.getData();/*  try {mailService.sendHtmlMail(user.getEmail(), "<dd书城>---用户激活---","<html><body><a href='http://"+ip+"/user/active?activeCode=" + userNotActive.getCode() + "'>亲爱的" + user.getUsername() +",请您点击此链接前往激活</a></body></html>");} catch (Exception e) {e.printStackTrace();model.addAttribute("registerError", "发送邮件异常!请检查您输入的邮箱地址是否正确。");return "fail";}*/model.addAttribute("username", user.getUsername());return "register_success";} else {//用户名已经存在,不能注册model.addAttribute("registerError", isExist.getMessage());return "register";}}@RequestMapping("/active")public String activeUser(String activeCode, Model model) {BSResult bsResult = userService.activeUser(activeCode);if (!StringUtils.isEmpty(bsResult.getData())) {model.addAttribute("username", bsResult.getData());return "active_success";} else {model.addAttribute("failMessage", bsResult.getMessage());return "fail";}}@RequestMapping("/update")@ResponseBodypublic BSResult updateUser(User user, HttpSession session){User loginUser = (User) session.getAttribute("loginUser");loginUser.setNickname(user.getNickname());loginUser.setLocation(user.getLocation());loginUser.setDetailAddress(user.getDetailAddress());loginUser.setGender(user.getGender());loginUser.setUpdated(new Date());loginUser.setPhone(user.getPhone());loginUser.setIdentity(user.getIdentity());loginUser.setPhone(user.getPhone());BSResult bsResult = userService.updateUser(loginUser);session.setAttribute("loginUser", loginUser);return bsResult;}@RequestMapping("/password/{userId}")@ResponseBodypublic BSResult changePassword(@PathVariable("userId") int userId,String oldPassword,String newPassword){if(StringUtils.isEmpty(oldPassword) || StringUtils.isEmpty(newPassword)){return BSResultUtil.build(400, "密码不能为空");}return userService.compareAndChange(userId,oldPassword,newPassword);}}

订单信息控制层:

@Controller
@RequestMapping("/order")
public class OrderController {@Autowiredprivate IOrderService orderService;@Autowiredprivate ICartService cartService;@Autowiredprivate IBookInfoService bookInfoService;/*** 填写订单信息页面** @param bookId* @param buyNum* @param request* @return*/@GetMapping("/info")public String orderInfo(@RequestParam(required = false, defaultValue = "0") int bookId,@RequestParam(required = false, defaultValue = "0") int buyNum,HttpServletRequest request) throws BSException {if (bookId != 0) {//点了立即购买,放到request域中,也session的立即购买域中以区分购物车中的书籍BookInfo bookInfo = bookInfoService.findById(bookId);if (bookInfo != null) {BSResult bsResult = cartService.addToCart(bookInfo, null, buyNum);request.getSession().setAttribute("buyNowCart", bsResult.getData());request.setAttribute("cart", bsResult.getData());return "order_info";} else {request.setAttribute("exception", "不好意思,书籍库存不足或不存在了!");return "exception";}}//没有点立即购买,购物车中的总金额大于0才让填写订单信息Cart cart = (Cart) request.getSession().getAttribute("cart");if (cart != null && cart.getTotal() > 0) {return "order_info";} else {return "cart";}}@GetMapping("/payPage/{orderId}")public String toPay(@PathVariable("orderId") String orderId, Model model) {BSResult bsResult = orderService.findOrderById(orderId);if (bsResult.getCode() == 200) {model.addAttribute("order", bsResult.getData());return "payment";}return "exception";}@RequestMapping("/deletion/{orderId}")public String deletion(@PathVariable("orderId") String orderId) {BSResult bsResult = orderService.deleteOrder(orderId);if (bsResult.getCode() == 200) {return "redirect:/order/list";}return "exception";}/*** 订单列表** @return*/@GetMapping("/list")public String orderList(HttpServletRequest request) {User loginUser = (User) request.getSession().getAttribute("loginUser");List<OrderCustom> orderCustoms = orderService.findOrdersByUserId(loginUser.getUserId());request.setAttribute("orderCustoms", orderCustoms);return "order_list";}/*** 创建订单** @return*/@PostMapping("/creation")public String createOrder(User userDTO, String express, int payMethod, HttpServletRequest request) {//立即购买,优先创建订单Cart buyNowCart = (Cart) request.getSession().getAttribute("buyNowCart");User loginUser = (User) request.getSession().getAttribute("loginUser");userDTO.setUserId(loginUser.getUserId());userDTO.setZipCode(loginUser.getZipCode());if (buyNowCart != null) {BSResult bsResult = orderService.createOrder(buyNowCart, userDTO, express, payMethod);if (bsResult.getCode() == 200) {request.setAttribute("order", bsResult.getData());cartService.clearCart(request, "buyNowCart");return "payment";} else {request.setAttribute("exception", bsResult.getMessage());return "exception";}}//普通购物车Cart cart = (Cart) request.getSession().getAttribute("cart");if (cart != null) {BSResult bsResult = orderService.createOrder(cart, userDTO, express, payMethod);if (bsResult.getCode() == 200) {request.setAttribute("order", bsResult.getData());cartService.clearCart(request, "cart");return "payment";} else {request.setAttribute("exception", bsResult.getMessage());return "exception";}} else {request.setAttribute("exception", "购物车为空!");return "exception";}}/*** 确认收货** @param orderId* @return*/@RequestMapping("/confirm/{orderId}")public String confirmReceiving(@PathVariable("orderId") String orderId, Model model) {BSResult bsResult = orderService.confirmReceiving(orderId);if (bsResult.getCode() == 200) {return "redirect:/order/list";} else {model.addAttribute("exception", bsResult.getMessage());return "exception";}}
}

购物车控制层:

@Controller
@RequestMapping("/cart")
public class CartController {@Autowiredprivate IBookInfoService bookInfoService;@Autowiredprivate ICartService cartService;//返回购物差页面@GetMapping("/items")public String showCart() {return "cart";}/*** 加入购物车** @param bookId* @param request* @return*/@RequestMapping("/addition")public String addToCart(@RequestParam(value = "bookId",defaultValue = "0") int bookId,@RequestParam(required = false,defaultValue = "0") int buyNum,HttpServletRequest request) {Cart cart = (Cart) request.getSession().getAttribute("cart");//根据要加入购物车的bookId查询bookInfoBookInfo bookInfo = bookInfoService.queryBookAvailable(bookId);if (bookInfo != null) {//这本书在数据库里BSResult bsResult = cartService.addToCart(bookInfo, cart, buyNum);request.getSession().setAttribute("cart", bsResult.getData());request.setAttribute("bookInfo", bookInfo);} else {//数据库里没有这本书,或库存不足request.setAttribute("bookInfo", null);}return "addcart";}@GetMapping("/clear")public String clearCart(HttpServletRequest request) {cartService.clearCart(request,"cart");return "cart";}@GetMapping("/deletion/{bookId}")public String deleteCartItem(@PathVariable("bookId") int bookId,HttpServletRequest request){cartService.deleteCartItem(bookId, request);return "redirect:/cart/items";}/*** 更新某个购物车项的购买数量* @param bookId* @param newNum* @param request* @return*/@PostMapping("/buy/num/update")@ResponseBodypublic BSResult updateBuyNum(int bookId, int newNum, HttpServletRequest request){return cartService.updateBuyNum(bookId, newNum, request);}@PostMapping("/checkOne")@ResponseBodypublic BSResult checkACartItem(int bookId,HttpServletRequest request){Cart cart = (Cart)request.getSession().getAttribute("cart");return cartService.checkedOrNot(cart, bookId);}
}

 源码获取:博客首页 "资源" 里下载!

Java项目:网上书城+后台管理系统(java+jsp+servlert+mysql+ajax)相关推荐

  1. Java项目:销售团队后台管理系统(java+SpringBoot+FreeMarker+bootstrap+echarts+mysql)

    源码获取:博客首页 "资源" 里下载! 项目介绍 该项目为后管系统,主要功能包括: 看板.业务机会管理.客户管理.联系人管理.我的日报.团队日报.主数据管理:组织架构管理:系统管理 ...

  2. 基于javaweb的网上商城系统(java+jsp+servlert+mysql+ajax)

    基于javaweb的网上商城系统(java+jsp+servlert+mysql+ajax) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/myec ...

  3. Java项目:快递取件管理系统(java+SSM+JSP+jQuery+Mysql)

    源码获取:俺的博客首页 "资源" 里下载! 项目介绍 车险理赔管理系统源码,分为两个角色,一个管理员,一个普通用户 主要功能说明: 管理员角色包含以下功能:管理员登录,个人资料修改 ...

  4. Java项目:疫情人员流动管理系统(java+JSP+SSM+Springboot+maven+Mysql)

    源码获取:博客首页 "资源" 里下载! 一.项目简述 本系统主要实现的功能有: 社区疫情流动人员管理系统,住户管理,出入管理,访客管理,体温录入,高风险警示等等. 二.项目运行 环 ...

  5. Java项目:网上花店商城系统(java+jsp+servlert+mysql+ajax)

    源码获取:博客首页 "资源" 里下载! 一.项目简述 功能: 一套完整的网上花店商场系统,系统支持前台会员的注册 登陆系统留言,花朵的品种选择,详情浏览,加入购物 车,购买花朵等: ...

  6. Java项目:教务处学生成绩管理系统(java+JSP+bootstrap+servlet+Mysql)

    源码获取:俺的博客首页 "资源" 里下载! 项目介绍 本项目包含管理员.教师.学生三种角色: 用户角色包含以下功能: 修改密码,查看自己的信息,查看自己的成绩,登录界面等功能. 管 ...

  7. Java项目:嘟嘟图片展览馆管理系统(java+Springboot+SpringMVC+JPA+Jsp+maven+mysql)

    源码获取:博客首页 "资源" 里下载! 一.项目运行 环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe(IntelliJ IDEA,Eclisp ...

  8. java web网上书城_基于Java web的网上书城

    源码编号:B-E00009点击查看分类规则 项目类型:Java EE项目(java web项目) 项目名称:基于Java web的网上书城(shinebookshop) 当前版本:V1.0.0版本 难 ...

  9. Java项目:CRM客户关系管理系统(java+Springboot+maven+mysql)

    源码获取:博客首页 "资源" 里下载! Springboot项目CRM客户关系管理系统: 系统实现了CRM客户关系系统的基本功能,主要有看板(当月参与的业务机会.当月转化情况.将要 ...

最新文章

  1. Python生物信息学⑤DNA转录RNA
  2. 做App还是微信公众号,你该如何抉择?
  3. Javascript实现动态菜单添加
  4. CSS之viewports剖析
  5. Qt笔记-解决QObject::startTimer: Timers cannot be started from another thread
  6. ICCV NAS Workshop 最佳论文提名:通过层级掩码实现高效神经网络架构搜索
  7. digest 用户认证 response生成算法
  8. ubuntu 开机后不动_Ubuntu启动时停止的问题
  9. ASP.NET 2.0 中的SqlCacheDependency特性
  10. isset、is_null、empty的区别
  11. js高级开发:气泡坦克(js对象,属性)
  12. 内存卡Android怎么删除,安卓手机怎么清理内置存储卡垃圾文件
  13. Photoshop实用的快捷键大全
  14. 估计中的概率公式总结
  15. 编写lisp程序解一元二次方程_vb解一元二次方程代码
  16. 锂矿的这个逻辑,我自己都不敢相信了
  17. 解决pip install (包名)报错问题
  18. Python 使用SMTP协议发送邮件
  19. 10款最佳跨浏览器测试工具,建议收藏
  20. 是非人生 — 一个菜鸟程序员的5年职场路 第21节

热门文章

  1. 在Mac上使用pip3安装交互式环境IPython实录
  2. Maya教程-XGEN制作毛发技能学习 Patreon – Cartoon Grooming Series by Jesus FC
  3. ceph admin socket修改ceph配置文件
  4. String拼接字符串效率低,你知道原因吗?
  5. Zookeeper 安装和配置
  6. 综合性深入的技术文章-20161103
  7. jquery通知插件toastr
  8. 搭建turnserver
  9. AutoFac使用方法总结:Part I
  10. pku 3422 Kaka's Matrix Travels 最大费用最大流