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

项目介绍

本项目为前后台管理系统,包括管理员与普通用户两种角色;
管理员角色包含以下功能:
管理员登录,用户管理,商品类型管理,商品管理,订单信息管理,用户留言管理,资讯管理等功能。

用户角色包含以下功能:
用户首页,用户登录,商品推荐,资讯信息,留言板,查看商品,提交订单,查看订单信息,个人资料管理等功能。

ps:推荐模块用了协同过滤推荐算法,下订单模块用的是百度地图api。本商城可以修改为任意商城不止是体育商城。

环境需要

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;

5.数据库:MySql 5.7版本;

6.是否Maven项目:是;

技术栈

1. 后端:SpringBoot

2. 前端:HTML+JSP+CSS+JavaScript+jQuery

使用说明

1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;
若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行;
3. 将项目中application.properties配置文件中的数据库配置改为自己的配置;
4. 运行项目,在浏览器中输入http://localhost:8110/ 登录
管理员账号/密码:admin/admin
用户账号/密码: user/123456

用户相关接口:

/*** 用户相关接口*/
@Controller
@RequestMapping("/index")
public class UserController{@Resourceprivate UserService userService;@Resourceprivate GoodService goodService;@Resourceprivate OrderService orderService;@Resourceprivate CartService cartService;/*** 用户注册* @return*/@GetMapping("/register")public String reg() {return "/index/register.jsp";}/*** 用户注册* @return*/@PostMapping("/register")public String register(Users user, HttpServletRequest request){if (user.getUsername().isEmpty()) {request.setAttribute("msg", "用户名不能为空!");}else if (Objects.nonNull(userService.getByUsername(user.getUsername()))) {request.setAttribute("msg", "用户名已存在!");}else {userService.add(user);request.setAttribute("msg", "注册成功 可以去登录了!");return "/index/login.jsp";}return "/index/register.jsp";}/*** 用户登录* @return*/@GetMapping("/login")public String log() {return "/index/login.jsp";}/*** 用户登录* @return*/@PostMapping("/login")public String login(Users user, HttpServletRequest request, HttpSession session) {Users loginUser = userService.getByUsernameAndPassword(user.getUsername(), user.getPassword());if (Objects.isNull(loginUser)) {request.setAttribute("msg", "用户名或密码错误");return "/index/login.jsp";}session.setAttribute("user", loginUser);// 还原购物车session.setAttribute("cartCount", cartService.getCount(loginUser.getId()));String referer = request.getHeader("referer"); // 来源页面System.out.println(referer); //TODOreturn "redirect:index";}/*** 注销登录* @return*/@GetMapping("/logout")public String logout(HttpSession session) {session.removeAttribute("user");session.removeAttribute("cartCount");return "/index/login.jsp";}/*** 查看积分*/@GetMapping("/mypoint")public String mypoint() {return "/index/mypoint.jsp";}//积分充值@RequestMapping("/addPoint")public String addPoint(double point,HttpSession session,HttpServletRequest request){Users users = (Users)session.getAttribute("user");BigDecimal bigDecimal = new BigDecimal(Double.toString(point)).add(new BigDecimal(Double.toString(users.getPoint())));users.setPoint(bigDecimal.doubleValue());int count = userService.updatePoint(users);if(count > 0){session.setAttribute("user",users);request.setAttribute("msg","充值成功!");}else{request.setAttribute("msg","充值失败!");}return "/index/mypoint.jsp";}/*** 查看购物车* @return*/@GetMapping("/cart")public String cart(HttpServletRequest request, HttpSession session) {Users user = (Users) session.getAttribute("user");request.setAttribute("cartList", cartService.getList(user.getId()));request.setAttribute("cartCount", cartService.getCount(user.getId()));request.setAttribute("cartTotal", cartService.getTotal(user.getId()));return "/index/cart.jsp";}/*** 购物车总金额* @return*/@GetMapping("/cartTotal")public @ResponseBody int cartTotal(HttpSession session){Users user = (Users) session.getAttribute("user");return cartService.getTotal(user.getId());}/*** 加入购物车* @return*/@PostMapping("/cartBuy")public @ResponseBody boolean cartBuy(int goodId, HttpSession session){Users user = (Users) session.getAttribute("user");return cartService.save(goodId, user.getId());}/*** 添加数量*/@PostMapping("/cartAdd")public @ResponseBody boolean cartAdd(int id){return cartService.add(id);}/*** 减少数量*/@PostMapping("/cartLess")public @ResponseBody boolean cartLess(int id){return cartService.less(id);}/*** 删除*/@PostMapping("/cartDelete")public @ResponseBody boolean cartDelete(int id){return cartService.delete(id);}/*** 查看订单* @return* @throws UnsupportedEncodingException */@GetMapping("/order")public String order(HttpServletRequest request, HttpSession session,@RequestParam(required=false, defaultValue="1")int page, @RequestParam(required=false, defaultValue="6")int size) throws UnsupportedEncodingException{Users user = (Users) session.getAttribute("user");request.setAttribute("orderList", orderService.getListByUserid(user.getId(), page, size));request.setAttribute("pageHtml", PageUtil.getPageHtml(request, orderService.getCountByUserid(user.getId()), page, size));return "/index/order.jsp";}/*** 直接购买* @return* @throws MyException */@PostMapping("/orderAdd")public String orderAdd(int goodId, HttpSession session) throws MyException{Users user = (Users) session.getAttribute("user");int orderId = orderService.add(goodId, user.getId());return "redirect:orderPay?id="+orderId; // 跳转支付}/*** 购物车结算* @return* @throws MyException */@GetMapping("/orderSave")public String orderSave(ServletRequest request, HttpSession session) throws MyException{Users user = (Users) session.getAttribute("user");int orderId = orderService.save(user.getId());session.removeAttribute("cartCount"); // 清理购物车sessionreturn "redirect:orderPay?id="+orderId; // 跳转支付}/*** 支付页面* @return*/@GetMapping("/orderPay")public String orderPay(int id, ServletRequest request) {request.setAttribute("order", orderService.get(id));return "/index/pay.jsp";}/*** 支付(模拟)* @return*/@PostMapping("/orderPay")@ResponseBodypublic int orderPay(Orders order,HttpSession session) {Users users = (Users) session.getAttribute("user");BigDecimal bigDecimal = new BigDecimal(0);if(order.getPaytype() == Orders.PAYTYPE_OFFLINE){//为积分支付时double d1 = order.getTotal();//商品总价if(users.getPoint().compareTo(d1) < 0){return -1;}else{//总积分 = 用户积分 - 抵扣积分bigDecimal = new BigDecimal(Double.toString(users.getPoint())).subtract(new BigDecimal(Double.toString(d1)));}}else{double d2 = order.getTotal()/100;//购买商品获取的积分//总积分 = 用户积分 + 获取的bigDecimal = new BigDecimal(Double.toString(users.getPoint())).add(new BigDecimal(Double.toString(d2)));}users.setPoint(bigDecimal.doubleValue());//保存积分int count = userService.updatePoint(users);if(count > 0){session.setAttribute("user",users);//更新用户积分}orderService.pay(order);return 1;}/*** 收货地址* @return*/@GetMapping("/address")public String address(){ // 使用session中的数据return "/index/address.jsp";}/*** 修改信息* @return*/@PostMapping("/addressUpdate")public String addressUpdate(String name, String phone, String address, HttpServletRequest request, HttpSession session){Users user = (Users) session.getAttribute("user");userService.update(user.getId(), name, phone, address);  // 更新数据库session.setAttribute("user", userService.get(user.getId())); // 更新sessionrequest.setAttribute("msg", "信息修改成功!");return "/index/address.jsp";}/*** 收货地址* @return*/@GetMapping("/password")public String password(){ // 使用session中的数据return "/index/password.jsp";}/*** 修改密码* @return*/@PostMapping("/passwordUpdate")public String passwordUpdate(String password, String passwordNew, HttpServletRequest request, HttpSession session){Users user = (Users) session.getAttribute("user");user = userService.get(user.getId());if(!user.getPassword().equals(SafeUtil.encode(password))) {request.setAttribute("msg", "原密码错误!");}else {userService.updatePassword(user.getId(), passwordNew);request.setAttribute("msg", "密码修改成功!");}return "/index/password.jsp";}/** 用戶確認收貨*/@RequestMapping("/userfinish")public String userFinish(int id, byte status,@RequestParam(required=false, defaultValue="1") int page) {orderService.finish(id);return "redirect:order?page="+page;}
}

后台管理接口:

/*** 后台管理接口*/
@Controller
@RequestMapping("/admin")
public class AdminController {@Autowiredprivate AdminService adminService;@Autowiredprivate OrderService orderService;@Autowiredprivate UserService userService;@Autowiredprivate GoodService goodService;@Autowiredprivate TopService topService;@Autowiredprivate TypeService typeService;/*** 管理员登录 (逻辑判断)* @return*/@GetMapping("/login")public String log() {return "/admin/login.jsp";}/*** 管理员登录* @return*/@PostMapping("/login")public String login(String username, String password, HttpServletRequest request, HttpSession session) {Admins admin = adminService.getByUsernameAndPassword(username, password);if (Objects.nonNull(admin)) {session.setAttribute("admin", admin);return "redirect:index";}request.setAttribute("msg", "用户名或密码错误!");return "/admin/login.jsp";}/*** 退出* @return*/@GetMapping("/logout")public String logout(HttpSession session) {session.removeAttribute("admin");return "/admin/login.jsp";}/*** 后台首页* @return*/@GetMapping("/index")public String index(HttpServletRequest request) {request.setAttribute("msg", "恭喜你! 登录成功了");return "/admin/index.jsp";}/*** 类目列表* @return*/@GetMapping("/typeList")public String typeList(HttpServletRequest request) {request.setAttribute("flag", 1);request.setAttribute("typeList", typeService.getList());return "/admin/type_list.jsp";}/*** 类目添加* @return*/@GetMapping("/typeAdd")public String typeAdd(HttpServletRequest request) {request.setAttribute("flag", 1);return "/admin/type_add.jsp";}/*** 类目添加* @return* @throws Exception */@PostMapping("/typeSave")public String typeSave(Types type) throws Exception {typeService.add(type);return "redirect:typeList?flag=1";}/*** 类目更新* @return*/@GetMapping("/typeEdit")public String typeEdit(int id, HttpServletRequest request) {request.setAttribute("flag", 1);request.setAttribute("type", typeService.get(id));return "/admin/type_edit.jsp";}/*** 类目更新* @return* @throws Exception */@PostMapping("/typeUpdate")public String typeUpdate(Types type) throws Exception {typeService.update(type);return "redirect:typeList?flag=1";}/*** 类目删除* @return*/@GetMapping("/typeDelete")public String typeDelete(int id) {typeService.delete(id);return "redirect:typeList?flag=1";}/*** 产品列表* @return*/@GetMapping("/goodList")public String goodList(HttpServletRequest request, @RequestParam(required=false, defaultValue="0") byte type,@RequestParam(required=false, defaultValue="1") int page,@RequestParam(required=false, defaultValue="10") int size) {request.setAttribute("flag", 2);request.setAttribute("page", page);request.setAttribute("type", type);if(type > 0) {String goodIds = topService.getGoodIdsByType(type);request.setAttribute("goodList", goodService.getListByIds(goodIds, page, size));request.setAttribute("pageTool", PageUtil.getPageTool(request, goodService.getCountByIds(goodIds), page, size));}else {request.setAttribute("goodList", goodService.getList(page, size));request.setAttribute("pageTool", PageUtil.getPageTool(request, goodService.getCount(), page, size));}return "/admin/good_list.jsp";}/*** 产品添加* @return*/@GetMapping("/goodAdd")public String goodAdd(HttpServletRequest request) {request.setAttribute("flag", 2);request.setAttribute("typeList", typeService.getList());return "/admin/good_add.jsp";}/*** 产品添加* @return* @throws Exception */@PostMapping("/goodSave")public String goodSave(Goods good, MultipartFile file,@RequestParam(required=false, defaultValue="1") int page) throws Exception {good.setCover(UploadUtil.upload(file));goodService.add(good);return "redirect:goodList?flag=2&page="+page;}/*** 产品更新* @return*/@GetMapping("/goodEdit")public String goodEdit(int id, HttpServletRequest request) {request.setAttribute("flag", 2);request.setAttribute("typeList", typeService.getList());request.setAttribute("good", goodService.get(id));return "/admin/good_edit.jsp";}/*** 产品更新* @return* @throws Exception */@PostMapping("/goodUpdate")public String goodUpdate(Goods good, MultipartFile file, @RequestParam(required=false, defaultValue="1") int page) throws Exception {if (Objects.nonNull(file) && !file.isEmpty()) {good.setCover(UploadUtil.upload(file));}goodService.update(good);return "redirect:goodList?flag=2&page="+page;}/*** 产品删除* @return*/@GetMapping("/goodDelete")public String goodDelete(int id, @RequestParam(required=false, defaultValue="1") int page) {goodService.delete(id);return "redirect:goodList?flag=2&page="+page;}/*** 添加推荐* @return*/@PostMapping("/topSave")public @ResponseBody String topSave(int goodId, byte type) {return topService.add(goodId, type) ? "ok" : null;}/*** 删除推荐* @return*/@PostMapping("/topDelete")public @ResponseBody String topDelete(int goodId, byte type) {return topService.delete(goodId, type) ? "ok" : null;}/*** 订单列表* @return*/@GetMapping("/orderList")public String orderList(HttpServletRequest request,@RequestParam(required=false, defaultValue="0")byte status, @RequestParam(required=false, defaultValue="1") int page, @RequestParam(required=false, defaultValue="10") int size) {request.setAttribute("flag", 3);request.setAttribute("status", status);request.setAttribute("orderList", orderService.getList(status, page, size));request.setAttribute("pageTool", PageUtil.getPageTool(request, orderService.getCount(status), page, size));return "/admin/order_list.jsp";}/*** 订单发货* @return*/@GetMapping("/orderSend")public String orderSend(int id, byte status,@RequestParam(required=false, defaultValue="1") int page) {orderService.send(id);return "redirect:orderList?flag=3&status="+status+"&page="+page;}/*** 订单完成* @return*/@GetMapping("/orderFinish")public String orderFinish(int id, byte status,@RequestParam(required=false, defaultValue="1") int page) {orderService.finish(id);return "redirect:orderList?flag=3&status="+status+"&page="+page;}/*** 订单删除* @return*/@GetMapping("/orderDelete")public String orderDelete(int id, byte status,@RequestParam(required=false, defaultValue="1") int page) {orderService.delete(id);return "redirect:orderList?flag=3&status="+status+"&page="+page;}/*** 顾客管理* @return*/@GetMapping("/userList")public String userList(HttpServletRequest request,@RequestParam(required=false, defaultValue="1") int page, @RequestParam(required=false, defaultValue="10") int size) {request.setAttribute("flag", 4);request.setAttribute("userList", userService.getList(page, size));request.setAttribute("pageTool", PageUtil.getPageTool(request, userService.getCount(), page, size));return "/admin/user_list.jsp";}/*** 顾客添加* @return*/@GetMapping("/userAdd")public String userAdd(HttpServletRequest request) {request.setAttribute("flag", 4);return "/admin/user_add.jsp";}/*** 顾客添加* @return*/@PostMapping("/userSave")public String userSave(Users user, HttpServletRequest request, @RequestParam(required=false, defaultValue="1") int page) {if (Objects.nonNull(userService.getByUsername(user.getUsername()))) {request.setAttribute("msg", "用户名已存在!");return "/admin/user_add.jsp";}userService.add(user);return "redirect:userList?flag=4&page="+page;}/*** 顾客密码重置页面* @return*/@GetMapping("/userRe")public String userRe(int id, HttpServletRequest request) {request.setAttribute("flag", 4);request.setAttribute("user", userService.get(id));return "/admin/user_reset.jsp";}/*** 顾客密码重置* @return*/@PostMapping("/userReset")public String userReset(int id, String password, @RequestParam(required=false, defaultValue="1") int page) {userService.updatePassword(id, password);return "redirect:userList?page="+page;}/*** 顾客更新* @return*/@GetMapping("/userEdit")public String userEdit(int id, HttpServletRequest request) {request.setAttribute("flag", 4);request.setAttribute("user", userService.get(id));return "/admin/user_edit.jsp";}/*** 顾客更新* @return*/@PostMapping("/userUpdate")public String userUpdate(int id, String name, String phone, String address, @RequestParam(required=false, defaultValue="1") int page) {userService.update(id, name, phone, address);return "redirect:userList?flag=4&page="+page;}/*** 顾客删除* @return*/@GetMapping("/userDelete")public String userDelete(int id, @RequestParam(required=false, defaultValue="1") int page) {userService.delete(id);return "redirect:userList?flag=4&page="+page;}/*** 管理员列表* @return*/@GetMapping("/adminList")public String adminList(HttpServletRequest request, @RequestParam(required=false, defaultValue="1") int page, @RequestParam(required=false, defaultValue="10") int size) {request.setAttribute("flag", 5);request.setAttribute("adminList", adminService.getList(page, size));request.setAttribute("pageTool", PageUtil.getPageTool(request, adminService.getCount(), page, size));return "/admin/admin_list.jsp";}/*** 管理员添加* @return*/@GetMapping("/adminAdd")public String adminAdd(HttpServletRequest request) {request.setAttribute("flag", 5);return "/admin/admin_add.jsp";}/*** 管理员密码重置* @return*/@GetMapping("/adminRe")public String adminRe(int id, HttpServletRequest request) {request.setAttribute("flag", 5);request.setAttribute("admin", adminService.get(id));return "/admin/admin_reset.jsp";}/*** 管理员密码重置* @return*/@PostMapping("/adminReset")public String adminReset(int id, String password, HttpServletRequest request,@RequestParam(required=false, defaultValue="1") int page) {adminService.update(id, password);return "redirect:adminList?page="+page;}/*** 管理员添加* @return*/@PostMapping("/adminSave")public String adminSave(Admins admin, HttpServletRequest request, @RequestParam(required=false, defaultValue="1") int page) {if (Objects.nonNull(adminService.getByUsername(admin.getUsername()))) {request.setAttribute("msg", "用户名已存在!");return "/admin/admin_add.jsp";}adminService.add(admin);return "redirect:adminList?flag=5&page="+page;}/*** 管理员删除* @return*/@GetMapping("/adminDelete")public String adminDelete(int id, @RequestParam(required=false, defaultValue="1") int page) {adminService.delete(id);return "redirect:adminList?flag=5&page="+page;}/*** 图片上传* @throws Exception */@PostMapping("upload")public @ResponseBody Map<String, Object> upload(MultipartFile imgFile) throws Exception {Map<String, Object> map = new HashMap<>();if (Objects.nonNull(imgFile) && !imgFile.isEmpty()) {map.put("error", 0);map.put("url", UploadUtil.upload(imgFile));return map;}else {map.put("error", 1);map.put("message", "上传出错啦");}return map;}/*** 订单导出*/@RequestMapping("orderExportExcel")public void orderExportExcel(HttpServletResponse response){//导出所有订单List<Orders> orderList = orderService.getAllList();for(Orders orders : orderList){if(orders.getAddress() != null && !"".equals(orders.getAddress())){StringBuffer buf=new StringBuffer();buf.append(orders.getName()+"\n"+orders.getPhone()+"\n"+orders.getAddress());orders.setAddress(buf.toString());}if(orders.getStatus() == Orders.STATUS_UNPAY){orders.setName("未付款");}else if(orders.getStatus() == Orders.STATUS_PAYED){orders.setName("已付款");}else if(orders.getStatus() == Orders.PAYTYPE_OFFLINE){orders.setName("配送中");}else{orders.setName("已完成");}if(orders.getPaytype() == Orders.PAYTYPE_WECHAT){orders.setPhone("微信");}else if(orders.getPaytype() == Orders.PAYTYPE_ALIPAY){orders.setPhone("支付宝");}else{orders.setPhone("积分");}StringBuffer buf1=new StringBuffer();orders.setUsername(orders.getUser().getName());for(Items items : orders.getItemList()){buf1.append(items.getGood().getName() + " *" + items.getAmount() + "\n");}orders.setDingdanInfo(buf1.toString());}SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");try {String export="订单编号#id,订单金额#total,商品详情#dingdanInfo,收货信息#address,订单状态#name,支付方式#phone,购买用户#username";//此处为标题,excel首行的title,按照此格式即可,格式无需改动,但是可以增加或者减少项目。String[] excelHeader = export.split(",");String fileName="订单" + sdf.format(new Date()); //className:生成的excel默认文件名和sheet页ExcelUtils.export(response, fileName, excelHeader, orderList);//调用封装好的导出方法,具体方法在下面} catch (Exception e) {e.printStackTrace();}}}

前台相关接口:

/*** 前台相关接口*/
@Controller
@RequestMapping("/index")
public class IndexController{@Autowiredprivate GoodService goodService;@Autowiredprivate TypeService typeService;/*** 首页* @return*/@GetMapping("/index")public String index(HttpServletRequest request){request.setAttribute("flag", 1);// 今日推荐List<Goods> todayList = goodService.getListByTopType(Tops.TYPE_TODAY, 1, 6); // 取前6个request.setAttribute("todayList", todayList);// 热销排行List<Goods> hotList = goodService.getListOrderSales(1, 10); // 取前10个request.setAttribute("hotList", hotList);// 类目列表List<Types> typeList = typeService.getList();List<Map<String, Object>> dataList = new ArrayList<>();for(Types type : typeList) {Map<String, Object> map = new HashMap<>();map.put("type", type);map.put("goodList", goodService.getListByType(type.getId(), 1, 15)); // 取前15个dataList.add(map);}request.setAttribute("dataList", dataList);return "/index/index.jsp";}/*** 商品分类* @return* @throws UnsupportedEncodingException */@GetMapping("/type")public String type(HttpServletRequest request, @RequestParam(required=false, defaultValue="0")int id, @RequestParam(required=false, defaultValue="1")int page, @RequestParam(required=false, defaultValue="10")int size) throws UnsupportedEncodingException {request.setAttribute("type", typeService.get(id));request.setAttribute("goodList", goodService.getListByType(id, page, size));request.setAttribute("pageHtml", PageUtil.getPageHtml(request, goodService.getCountByType(id), page, size));return "/index/goods.jsp";}/*** 今日推荐* @return* @throws UnsupportedEncodingException */@GetMapping("/today")public String today(HttpServletRequest request, @RequestParam(required=false, defaultValue="1")int page, @RequestParam(required=false, defaultValue="10")int size) throws UnsupportedEncodingException {request.setAttribute("flag", 2);request.setAttribute("goodList", goodService.getListByTopType(Tops.TYPE_TODAY, page, size));request.setAttribute("pageHtml", PageUtil.getPageHtml(request, goodService.getCountByTopType(Tops.TYPE_TODAY), page, size));return "/index/goods.jsp";}/*** 热销推荐* @return* @throws UnsupportedEncodingException */@GetMapping("/hot")public String hot(HttpServletRequest request, @RequestParam(required=false, defaultValue="1")int page, @RequestParam(required=false, defaultValue="10")int size) throws UnsupportedEncodingException{request.setAttribute("flag", 3);request.setAttribute("goodList", goodService.getListOrderSales(page, size));request.setAttribute("pageHtml", PageUtil.getPageHtml(request, goodService.getCount(), page, size));return "/index/goods.jsp";}/*** 新品上市* @return* @throws UnsupportedEncodingException */@GetMapping("/new")public String news(HttpServletRequest request, @RequestParam(required=false, defaultValue="1")int page, @RequestParam(required=false, defaultValue="10")int size) throws UnsupportedEncodingException{request.setAttribute("flag", 4);request.setAttribute("goodList", goodService.getList(page, size));request.setAttribute("pageHtml", PageUtil.getPageHtml(request, goodService.getCount(), page, size));return "/index/goods.jsp";}/*** 搜索* @return*/@GetMapping("/search")public String search(String search, HttpServletRequest request, @RequestParam(required=false, defaultValue="1")int page, @RequestParam(required=false, defaultValue="10")int size) throws UnsupportedEncodingException {search = new String(search.getBytes("ISO8859-1"),"utf-8");request.setAttribute("search", search);System.out.println(search);if (Objects.nonNull(search) && !search.trim().isEmpty()) {request.setAttribute("goodList", goodService.getListByName(search, page, size));request.setAttribute("pageHtml", PageUtil.getPageHtml(request, goodService.getTotalByName(search), page, size));}return "/index/goods.jsp";}/*** 商品详情* @return*/@GetMapping("/detail")public String detail(int id, HttpServletRequest request){request.setAttribute("good", goodService.get(id));// 今日推荐前两个 在详情页显示request.setAttribute("todayList", goodService.getListByTopType(Tops.TYPE_TODAY, 1, 2));return "/index/detail.jsp";}}

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

Java项目:体育用品商城(java+SpringBoot+jsp+html+maven+mysql)相关推荐

  1. Java项目:在线健身房管理系统(java+SpringBoot+JSP+HTML+maven+mysql)

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

  2. 基于javaweb+mysql的体育用品商城(java+SpringBoot+jsp+html+maven+mysql)

    项目介绍 本项目为前后台管理系统,包括管理员与普通用户两种角色: 管理员角色包含以下功能: 管理员登录,用户管理,商品类型管理,商品管理,订单信息管理,用户留言管理,资讯管理等功能. 用户角色包含以下 ...

  3. Java项目:美容院预约管理系统(java+SpringBoot+JSP+jQuery+maven+mysql)

    源码获取:博客首页 "资源" 里下载! 项目介绍 本系统分为管理员与普通用户两种角色: 管理员角色包含以下功能: 登录,首页,新增管理员,管理员信息列表,网站用户信息列表,新增新闻 ...

  4. Java毕设项目网上体育用品商城系统(java+VUE+Mybatis+Maven+Mysql)

    Java毕设项目网上体育用品商城系统(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(W ...

  5. java毕业设计网上体育用品商城系统mybatis+源码+调试部署+系统+数据库+lw

    java毕业设计网上体育用品商城系统mybatis+源码+调试部署+系统+数据库+lw java毕业设计网上体育用品商城系统mybatis+源码+调试部署+系统+数据库+lw 本源码技术栈: 项目架构 ...

  6. java+ssh+mysql体育用品商城

    项目介绍: 基于java+ssh+mysql的体育用品商城,包含用户和管理员权限,系统功能如下: 管理员:密码修改.会员管理.商品(类别管理.商品管理).订单管理.销量管理.留言公告管理.退出. 用户 ...

  7. 基于JAVA网上体育用品销售系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署

    基于JAVA网上体育用品销售系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署 基于JAVA网上体育用品销售系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署 本源码技术栈: ...

  8. 基于JAVA冠军体育用品购物网站计算机毕业设计源码+数据库+lw文档+系统+部署

    基于JAVA冠军体育用品购物网站计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA冠军体育用品购物网站计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B/S架构 ...

  9. 分享一个SpringBoot体育用品商城

    运行环境: 最好是java jdk 1.8,我们在这个平台上运行的.其他版本理论上也可以. IDE环境: Eclipse,Myeclipse,IDEA或者Spring Tool Suite都可以 to ...

  10. 计算机毕业设计Java冠军体育用品购物网站(源码+系统+mysql数据库+Lw文档)

    计算机毕业设计Java冠军体育用品购物网站(源码+系统+mysql数据库+Lw文档) 计算机毕业设计Java冠军体育用品购物网站(源码+系统+mysql数据库+Lw文档) 本源码技术栈: 项目架构:B ...

最新文章

  1. 【LeetCode】55.跳跃游戏
  2. FAT32文件系统结构分析
  3. Jsp----注册登陆
  4. 17. Letter Combinations of a Phone Number
  5. 51CTO,什么情况?
  6. Java 11 究竟比 8 快了多少?看看这个基准测试
  7. Python 学习笔记12 类 - 使用类和实例
  8. 【网】关于 Blog 和 RSS 的全面介绍
  9. Homework 8 测试计划
  10. paylinks.php_毕业设计-基于PHP的网上购物网站系统设计
  11. 【printf函数与scanf函数】(学习笔记5--标准I/O函数)
  12. LinkedHashMap转对象
  13. 为什么技术人员要具备产品思维?
  14. 动网新闻系统IWMS中实现带标题幻灯片的功能效果
  15. 关于TR1900错误的一些解决方法(引用冯哥)
  16. 操作系统中磁盘调度算法详解
  17. Machine Learning – 第2周(Linear Regression with Multiple Variables、Octave/Matlab Tutorial)
  18. 为华生物COOH-PEG-MAL羧基-聚乙二醇-马来酰亚胺的简介及应用说明
  19. Git介绍及常用操作演示(一)--技术流ken
  20. Java将汉字转换为全拼

热门文章

  1. 小米手机 VS 阿里手机,阿里输在512MB内存,华为Honor只有电池容量跟小米差不多...
  2. 大中型企业建立IT服务台的意义及实践
  3. 旋转木马图片效果图,轮播图
  4. 计算机键盘突然失灵,笔记本键盘突然用不了怎么办_笔记本键盘突然失灵怎么回事-win7之家...
  5. php支付宝 缺少签名参数,【支付宝】退款接口 报 “缺少签名参数”
  6. DTOJ #1079. 多项式展开 mult
  7. Wed Dec 20 2019 00:00:00 GMT+0800 (中国标准时间) 时间转换
  8. 基于银河麒麟 V10 系统安装和卸载 DM8 数据库
  9. CNN-LSTM预测北京雾霾浓度完整代码
  10. 程序员的成长之路——道和术的思考