Java 文創(chuàng)商城系統(tǒng)的實(shí)現(xiàn)流程
一、項(xiàng)目簡述
功能:本系統(tǒng)分用戶前臺(tái)和管理員后臺(tái)。 前臺(tái)展示+后臺(tái)管理,前臺(tái)界面可實(shí)現(xiàn)用戶登錄,用戶注 冊,商品展示,商品明細(xì)展示,用戶信息修改,密碼修 改,購物車添加,商品購買,商品結(jié)算,訂單查詢,購物 車查詢,后臺(tái)管理可實(shí)現(xiàn)商品管理,訂單管理,用戶管理
二、項(xiàng)目運(yùn)行
環(huán)境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持)
項(xiàng)目技術(shù): JSP +Spring + SpringMVC + MyBatis + html+ css + JavaScript + JQuery + Ajax + layui+ maven等等。
用戶相關(guān)接口業(yè)務(wù):
/** * 用戶相關(guān)接口 */ @Controller @RequestMapping("/index") public class UserController{ @Resource private UserService userService; @Resource private OrderService orderService; @Resource private GoodService goodService; @Resource private TypeService typeService; @Resource private ShopcartService shopcartService; @Resource private SkuService skuService; /** * 用戶注冊 * @return */ @GetMapping("/register") public String reg(Model model) { model.addAttribute("flag", -1); // 注冊頁面 return "/index/register.jsp"; } /** * 用戶注冊 * @return */ @PostMapping("/register") public String register(Users user, Model model){ if (user.getUsername().isEmpty()) { model.addAttribute("msg", "用戶名不能為空!"); return "/index/register.jsp"; }else if (userService.isExist(user.getUsername())) { model.addAttribute("msg", "用戶名已存在!"); return "/index/register.jsp"; }else { String password = user.getPassword(); userService.add(user); user.setPassword(password); return "/index/index"; // 注冊成功后轉(zhuǎn)去登錄 } } /** * 用戶登錄 * @return */ @GetMapping("/login") public String log() { return "/index/index"; } /** * 用戶登錄 * @return */ @PostMapping("/login") public String login(@RequestParam(required=false, defaultValue="0")int flag, Users user, HttpSession session, Model model) { model.addAttribute("typeList", typeService.getList()); if(flag==-1) { flag = 6; // 登錄頁面 return "/index/index"; } if(userService.checkUser(user.getUsername(), user.getPassword())){ Users loginUser = userService.get(user.getUsername()); session.setAttribute("user", loginUser); // 還原購物車數(shù)量 session.setAttribute("total", shopcartService.getTotal(loginUser.getId())); return "redirect:index"; } else { model.addAttribute("msg", "用戶名或密碼錯(cuò)誤!"); return "/index/index"; } } /** * 注銷登錄 * @return */ @RequestMapping("/logout") public String logout(HttpSession session) { session.removeAttribute("user"); session.removeAttribute("order"); return "/index/index"; } /** * 查看購物車 * @return */ @RequestMapping("/shopcart") public String shopcart(Model model, HttpSession session) { Users user = (Users) session.getAttribute("user"); if (user == null) { model.addAttribute("msg", "請先登錄!"); return "/index/index"; } model.addAttribute("typeList", typeService.getList()); model.addAttribute("shopcartList", shopcartService.getList(user.getId())); model.addAttribute("totalPrice", shopcartService.getTotalPrice(user.getId())); return "/index/shopcart.jsp"; } /** * 購買 * @return */ @RequestMapping("/buy") public @ResponseBody int buy(Shopcart shopcart, HttpSession session, Model model){ Users user = (Users) session.getAttribute("user"); if (user == null) { return -111; } shopcart.setUserId(user.getId()); shopcart.setGood(goodService.get(shopcart.getGoodId())); // 驗(yàn)證庫存 // int stock = skuService.getStock(shopcart.getGoodId(), shopcart.getColorId(), shopcart.getSizeId()); // if(shopcart.getAmount() > stock) { // model.addAttribute("msg", "商品 [ " + shopcart.getGood().getName() + " ] 庫存不足! 當(dāng)前庫存只有: " + stock); // } return orderService.save(Arrays.asList(shopcart), user); } /** * 購買 * @return */ @RequestMapping("/cart") public @ResponseBody int cart(Shopcart shopcart, HttpSession session, Model model){ Users user = (Users) session.getAttribute("user"); if (user == null) { return -111; } shopcart.setUserId(user.getId()); shopcartService.save(shopcart); int total = shopcartService.getTotal(user.getId()); session.setAttribute("total", total); return total; } /** * 添加 */ @RequestMapping("/add") public @ResponseBody boolean add(int skuid, HttpSession session){ Users user = (Users) session.getAttribute("user"); if (user == null) { return false; } return shopcartService.add(skuid); } /** * 減少 */ @RequestMapping("/less") public @ResponseBody boolean less(int skuid, HttpSession session){ Users user = (Users) session.getAttribute("user"); if (user == null) { return false; } return shopcartService.less(skuid); } /** * 刪除 */ @RequestMapping("/delete") public @ResponseBody boolean delete(int skuid, HttpSession session){ Users user = (Users) session.getAttribute("user"); if (user == null) { return false; } shopcartService.delete(skuid); session.setAttribute("total", shopcartService.getTotal(user.getId())); return true; } /** * 總金額 * @return */ @RequestMapping("/total") public @ResponseBody int total(HttpSession session){ Users user = (Users) session.getAttribute("user"); if (user == null) { return -111; } return shopcartService.getTotalPrice(user.getId()); } /** * 提交訂單 * @return */ @RequestMapping("/save") public String save(ServletRequest request, HttpSession session, Model model){ Users user = (Users) session.getAttribute("user"); if (user == null) { model.addAttribute("msg", "請先登錄!"); return "/index/index"; } List<Shopcart> shopcartList = shopcartService.getList(user.getId()); if(Objects.isNull(shopcartList) || shopcartList.isEmpty()) { model.addAttribute("msg", "購物車沒有商品"); return shopcart(model, session); } // 驗(yàn)證庫存 for(Shopcart cart : shopcartList) { int stock = skuService.getStock(cart.getGoodId(), cart.getColorId(), cart.getSizeId()); if(cart.getAmount() > stock) { model.addAttribute("msg", "商品 [ " + cart.getGood().getName() + " ] 庫存不足! 當(dāng)前庫存只有: " + stock); return shopcart(model, session); } } int orderid = orderService.save(shopcartList, user); if(orderid > 0) { // 清空購物車 session.setAttribute("total", shopcartService.getTotal(user.getId())); // 跳轉(zhuǎn)支付 return "redirect:topay?orderid="+orderid; } model.addAttribute("msg", "出了點(diǎn)問題"); return shopcart(model, session); } /** * 支付頁面 * @return */ @RequestMapping("/topay") public String topay(int orderid, ServletRequest request, HttpSession session) { Users user = (Users) session.getAttribute("user"); if (user == null) { request.setAttribute("msg", "請先登錄!"); return "/index/index"; } request.setAttribute("typeList", typeService.getList()); request.setAttribute("order", orderService.get(orderid)); return "/index/pay.jsp"; } /** * 支付(模擬) * @return */ @RequestMapping("/pay") public String pay(Orders order, ServletRequest request, HttpSession session) { Users user = (Users) session.getAttribute("user"); if (user == null) { request.setAttribute("msg", "請先登錄!"); return "/index/index"; } // 模擬支付 orderService.pay(order); request.setAttribute("typeList", typeService.getList()); request.setAttribute("order", orderService.get(order.getId())); request.setAttribute("msg", "支付成功! 即將跳轉(zhuǎn)到訂單列表"); return "/index/pay.jsp"; } /** * 查看訂單 * @return */ @RequestMapping("/order") public String order(HttpSession session, Model model){ model.addAttribute("flag", 12); Users user = (Users) session.getAttribute("user"); if (user == null) { model.addAttribute("msg", "請登錄后查看訂單!"); return "/index/index"; } model.addAttribute("typeList", typeService.getList()); model.addAttribute("orderList", orderService.getListByUserid(user.getId())); return "/index/order.jsp"; } /** * 個(gè)人信息 * @return */ @RequestMapping("/my") public String my(HttpSession session, Model model){ model.addAttribute("flag", 11); model.addAttribute("typeList", typeService.getList()); Users user = (Users) session.getAttribute("user"); if (user == null) { model.addAttribute("msg", "請先登錄!"); return "/index/index"; } model.addAttribute("user", user); return "/index/my.jsp"; } /** * 修改信息 * @return */ @RequestMapping("/updateUser") public String updateUser(Users user, HttpSession session, Model model){ model.addAttribute("flag", 11); model.addAttribute("typeList", typeService.getList()); Users userLogin = (Users) session.getAttribute("user"); if (userLogin == null) { model.addAttribute("msg", "請先登錄!"); return "/index/index"; } // 修改資料 Users u = userService.get(userLogin.getId()); u.setName(user.getName()); u.setPhone(user.getPhone()); u.setAddress(user.getAddress()); userService.update(u); // 更新數(shù)據(jù)庫 session.setAttribute("user", u); // 更新session model.addAttribute("msg", "信息修改成功!"); return "/index/my.jsp"; } /** * 修改信息 * @return */ @RequestMapping("/updatePassword") public String updatePassword(Users user, HttpSession session, Model model){ model.addAttribute("flag", 11); model.addAttribute("typeList", typeService.getList()); Users userLogin = (Users) session.getAttribute("user"); if (userLogin == null) { model.addAttribute("msg", "請先登錄!"); return "/index/index"; } // 修改密碼 Users u = userService.get(userLogin.getId()); if(user.getPasswordNew()!=null && !user.getPasswordNew().trim().isEmpty()) { if (user.getPassword()!=null && !user.getPassword().trim().isEmpty() && SafeUtil.encode(user.getPassword()).equals(u.getPassword())) { if (user.getPasswordNew()!=null && !user.getPasswordNew().trim().isEmpty()) { u.setPassword(SafeUtil.encode(user.getPasswordNew())); } userService.update(u); // 更新數(shù)據(jù)庫 session.setAttribute("user", u); // 更新session model.addAttribute("msg", "密碼修改成功!"); return "redirect:logout"; }else { model.addAttribute("msg", "原密碼錯(cuò)誤!"); } } return "/index/index"; } }
后臺(tái)登錄驗(yàn)證攔截器:
/** * 后臺(tái)登錄驗(yàn)證攔截器 */ public class AdminInterceptor extends HandlerInterceptorAdapter{ /** * 檢測登錄狀態(tài) */ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { String uri = request.getRequestURI(); if(uri.contains("css/") || uri.contains("js/") || uri.contains("img/") || uri.contains("login") || uri.contains("logout")) { return true; // 不攔截路徑 } Object username = request.getSession().getAttribute("username"); if (Objects.nonNull(username) && !username.toString().trim().isEmpty()) { return true; // 登錄驗(yàn)證通過 } response.sendRedirect("login.jsp"); return false; // 其他情況一律攔截 } }
后臺(tái)相關(guān)接口:
/** * 后臺(tái)相關(guān)接口 */ @Controller @RequestMapping("/admin") public class AdminController { private static final int rows = 10; @Autowired private AdminService adminService; @Autowired private OrderService orderService; @Autowired private UserService userService; @Autowired private GoodService goodService; @Autowired private TopService topService; @Autowired private TypeService typeService; @Autowired private SkuService skuService; /** * 管理員登錄 * @return */ @GetMapping("/login") public String log() { return "/admin/login.jsp"; } /** * 管理員登錄 * @return */ @PostMapping("/login") public String login(Admins admin, HttpServletRequest request, HttpSession session) { if (adminService.checkUser(admin.getUsername(), admin.getPassword())) { session.setAttribute("username", admin.getUsername()); return "redirect:typeList"; } request.setAttribute("msg", "用戶名或密碼錯(cuò)誤!"); return "/admin/login.jsp"; } /** * 退出 * @return */ @RequestMapping("/logout") public String logout(HttpSession session) { session.removeAttribute("admin"); return "/admin/login.jsp"; } /** * 后臺(tái)首頁 * @return */ @RequestMapping("/index") public String index(HttpServletRequest request) { request.setAttribute("msg", "恭喜你! 登錄成功了"); return "/admin/index.jsp"; } /** * 類目列表 * * @return */ @RequestMapping("/typeList") public String typeList(HttpServletRequest request) { request.setAttribute("flag", 1); request.setAttribute("typeList", typeService.getList()); return "/admin/type_list.jsp"; } /** * 類目添加 * * @return */ @RequestMapping("/typeAdd") public String typeAdd(HttpServletRequest request) { request.setAttribute("flag", 1); return "/admin/type_add.jsp"; } /** * 類目添加 * * @return * @throws Exception */ @RequestMapping("/typeSave") public String typeSave(Types type, MultipartFile file, @RequestParam(required=false, defaultValue="1") int page) throws Exception { type.setCover(UploadUtil.upload(file)); typeService.add(type); return "redirect:typeList?flag=1&page="+page; } /** * 類目更新 * * @return */ @RequestMapping("/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 */ @RequestMapping("/typeUpdate") public String typeUpdate(Types type, MultipartFile file, @RequestParam(required=false, defaultValue="1") int page) throws Exception { if (Objects.nonNull(file) && !file.isEmpty()) { type.setCover(UploadUtil.upload(file)); } typeService.update(type); return "redirect:typeList?flag=1&page="+page; } /** * 類目刪除 * * @return */ @RequestMapping("/typeDelete") public String typeDelete(Types type, @RequestParam(required=false, defaultValue="1") int page) { typeService.delete(type); return "redirect:typeList?flag=1&page="+page; } /** * sku列表 * * @return */ @RequestMapping("/skuList") public String skuList(@RequestParam(required=false, defaultValue="0")byte status, HttpServletRequest request) { request.setAttribute("flag", 2); request.setAttribute("status", status); request.setAttribute("skuList", status>0 ? skuService.getSizeList() : skuService.getColorList()); return "/admin/sku_list.jsp"; } /** * sku添加 * * @return */ @RequestMapping("/skuSave") public String skuSave(String name, int status) { if(status > 0) { skuService.addSize(name); }else { skuService.addColor(name); } return "redirect:skuList?status="+status; } /** * sku刪除 * * @return */ @RequestMapping("/skuDelete") public String skuDelete(int id, int status) { if(status > 0) { skuService.deleteSize(id); }else { skuService.deleteColor(id); } return "redirect:skuList?status="+status; } /** * 產(chǎn)品列表 * * @return */ @RequestMapping("/goodList") public String goodList(@RequestParam(required=false, defaultValue="0")byte status, HttpServletRequest request, @RequestParam(required=false, defaultValue="1") int page) { request.setAttribute("flag", 3); request.setAttribute("page", page); request.setAttribute("status", status); request.setAttribute("goodList", goodService.getList(status, page, rows)); request.setAttribute("pageTool", PageUtil.getPageTool(request, goodService.getTotal(status), page, rows)); return "/admin/good_list.jsp"; } /** * 產(chǎn)品添加 * * @return */ @RequestMapping("/goodAdd") public String goodAdd(HttpServletRequest request) { request.setAttribute("flag", 3); request.setAttribute("typeList", typeService.getList()); request.setAttribute("colorList", skuService.getColorList()); request.setAttribute("sizeList", skuService.getSizeList()); return "/admin/good_add.jsp"; } /** * 產(chǎn)品添加 * * @return * @throws Exception */ @RequestMapping("/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=3&page="+page; } /** * 產(chǎn)品更新 * * @return */ @RequestMapping("/goodEdit") public String goodEdit(int id, HttpServletRequest request) { request.setAttribute("flag", 3); request.setAttribute("typeList", typeService.getList()); request.setAttribute("colorList", skuService.getColorList()); request.setAttribute("sizeList", skuService.getSizeList()); request.setAttribute("good", goodService.get(id)); return "/admin/good_edit.jsp"; } /** * 產(chǎn)品更新 * * @return * @throws Exception */ @RequestMapping("/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=3&page="+page; } /** * 產(chǎn)品刪除 * * @return */ @RequestMapping("/goodDelete") public String goodDelete(int id, @RequestParam(required=false, defaultValue="1") int page) { goodService.delete(id); return "redirect:goodList?flag=3&page="+page; } /** * 添加推薦 * @return */ @RequestMapping("/topSave") public @ResponseBody String topSave(Tops tops, @RequestParam(required=false, defaultValue="0")byte status, @RequestParam(required=false, defaultValue="1") int page) { int id = topService.add(tops); return id > 0 ? "ok" : null; } /** * 刪除推薦 * @return */ @RequestMapping("/topDelete") public @ResponseBody String topDelete(Tops tops, @RequestParam(required=false, defaultValue="0")byte status, @RequestParam(required=false, defaultValue="1") int page) { boolean flag = topService.delete(tops); return flag ? "ok" : null; } /** * 訂單列表 * * @return */ @RequestMapping("/orderList") public String orderList(@RequestParam(required=false, defaultValue="0")byte status, HttpServletRequest request, @RequestParam(required=false, defaultValue="1") int page) { request.setAttribute("flag", 4); request.setAttribute("status", status); request.setAttribute("orderList", orderService.getList(status, page, rows)); request.setAttribute("pageTool", PageUtil.getPageTool(request, orderService.getTotal(status), page, rows)); return "/admin/order_list.jsp"; } /** * 訂單發(fā)貨 * * @return */ @RequestMapping("/orderDispose") public String orderDispose(int id, byte status, @RequestParam(required=false, defaultValue="1") int page) { orderService.dispose(id); return "redirect:orderList?flag=4&status="+status+"&page="+page; } /** * 訂單完成 * * @return */ @RequestMapping("/orderFinish") public String orderFinish(int id, byte status, @RequestParam(required=false, defaultValue="1") int page) { orderService.finish(id); return "redirect:orderList?flag=4&status="+status+"&page="+page; } /** * 訂單刪除 * * @return */ @RequestMapping("/orderDelete") public String orderDelete(int id, byte status, @RequestParam(required=false, defaultValue="1") int page) { orderService.delete(id); return "redirect:orderList?flag=4&status="+status+"&page="+page; } /** * 顧客管理 * * @return */ @RequestMapping("/userList") public String userList(HttpServletRequest request, @RequestParam(required=false, defaultValue="1") int page) { request.setAttribute("flag", 5); request.setAttribute("userList", userService.getList(page, rows)); request.setAttribute("pageTool", PageUtil.getPageTool(request, userService.getTotal(), page, rows)); return "/admin/user_list.jsp"; } /** * 顧客添加 * * @return */ @RequestMapping("/userAdd") public String userAdd(HttpServletRequest request) { request.setAttribute("flag", 5); return "/admin/user_add.jsp"; } /** * 顧客添加 * * @return */ @RequestMapping("/userSave") public String userSave(Users user, HttpServletRequest request, @RequestParam(required=false, defaultValue="1") int page) { if (userService.isExist(user.getUsername())) { request.setAttribute("msg", "用戶名已存在!"); return "/admin/user_add.jsp"; } userService.add(user); return "redirect:userList?flag=5&page="+page; } /** * 顧客密碼重置頁面 * * @return */ @RequestMapping("/userRe") public String userRe(int id, HttpServletRequest request) { request.setAttribute("flag", 5); request.setAttribute("user", userService.get(id)); return "/admin/user_reset.jsp"; } /** * 顧客密碼重置 * * @return */ @RequestMapping("/userReset") public String userReset(Users user, @RequestParam(required=false, defaultValue="1") int page) { String password = SafeUtil.encode(user.getPassword()); user = userService.get(user.getId()); user.setPassword(password); userService.update(user); return "redirect:userList?page="+page; } /** * 顧客更新 * * @return */ @RequestMapping("/userEdit") public String userEdit(int id, HttpServletRequest request) { request.setAttribute("flag", 5); request.setAttribute("user", userService.get(id)); return "/admin/user_edit.jsp"; } /** * 顧客更新 * * @return */ @RequestMapping("/userUpdate") public String userUpdate(Users user, @RequestParam(required=false, defaultValue="1") int page) { userService.update(user); return "redirect:userList?flag=5&page="+page; } /** * 顧客刪除 * * @return */ @RequestMapping("/userDelete") public String userDelete(Users user, @RequestParam(required=false, defaultValue="1") int page) { userService.delete(user); return "redirect:userList?flag=5&page="+page; } /** * 管理員列表 * * @return */ @RequestMapping("/adminList") public String adminList(HttpServletRequest request, @RequestParam(required=false, defaultValue="1") int page) { request.setAttribute("flag", 6); request.setAttribute("adminList", adminService.getList(page, rows)); request.setAttribute("pageTool", PageUtil.getPageTool(request, adminService.getTotal(), page, rows)); return "/admin/admin_list.jsp"; } /** * 管理員添加 * * @return */ @RequestMapping("/adminAdd") public String adminAdd(HttpServletRequest request) { request.setAttribute("flag", 6); return "/admin/admin_add.jsp"; } /** * 管理員密碼重置 * * @return */ @RequestMapping("/adminRe") public String adminRe(int id, HttpServletRequest request) { request.setAttribute("flag", 6); request.setAttribute("admin", adminService.get(id)); return "/admin/admin_reset.jsp"; } /** * 管理員密碼重置 * * @return */ @RequestMapping("/adminReset") public String adminReset(Admins admin, HttpServletRequest request, @RequestParam(required=false, defaultValue="1") int page) { String password = SafeUtil.encode(admin.getPassword()); admin = adminService.get(admin.getId()); admin.setPassword(password); adminService.update(admin); return "redirect:adminList?page="+page; } /** * 管理員添加 * * @return */ @RequestMapping("/adminSave") public String adminSave(Admins admin, HttpServletRequest request, @RequestParam(required=false, defaultValue="1") int page) { if (adminService.isExist(admin.getUsername())) { request.setAttribute("msg", "用戶名已存在!"); return "/admin/admin_add.jsp"; } adminService.add(admin); return "redirect:adminList?flag=6&page="+page; } /** * 管理員修改 * * @return */ @RequestMapping("/adminEdit") public String adminEdit(int id, HttpServletRequest request) { request.setAttribute("flag", 6); request.setAttribute("admin", adminService.get(id)); return "/admin/admin_edit.jsp"; } /** * 管理員更新 * * @return */ @RequestMapping("/adminUpdate") public String adminUpdate(Admins admin, @RequestParam(required=false, defaultValue="1") int page) { admin.setPassword(SafeUtil.encode(admin.getPassword())); adminService.update(admin); return "redirect:adminList?flag=6&page="+page; } /** * 管理員刪除 * * @return */ @RequestMapping("/adminDelete") public String adminDelete(Admins admin, @RequestParam(required=false, defaultValue="1") int page) { adminService.delete(admin); return "redirect:adminList?flag=6&page="+page; } }
到此這篇關(guān)于Java 文創(chuàng)商城系統(tǒng)的實(shí)現(xiàn)流程的文章就介紹到這了,更多相關(guān)Java 商城系統(tǒng)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Java畢業(yè)設(shè)計(jì)實(shí)戰(zhàn)項(xiàng)目之寵物商城系統(tǒng)的實(shí)現(xiàn)流程
- Java畢業(yè)設(shè)計(jì)實(shí)戰(zhàn)項(xiàng)目之在線服裝銷售商城系統(tǒng)的實(shí)現(xiàn)流程
- Java實(shí)戰(zhàn)花店商城系統(tǒng)的實(shí)現(xiàn)流程
- Java實(shí)戰(zhàn)玩具商城的前臺(tái)與后臺(tái)實(shí)現(xiàn)流程
- Java實(shí)現(xiàn)茶葉售賣商城系統(tǒng)(java+SSM+JSP+EasyUi+mysql)
- Java 仿天貓服裝商城系統(tǒng)的實(shí)現(xiàn)流程
- Java女裝商城系統(tǒng)的實(shí)現(xiàn)流程
- Java 實(shí)戰(zhàn)項(xiàng)目錘煉之在線蛋糕商城系統(tǒng)的實(shí)現(xiàn)
- Java畢業(yè)設(shè)計(jì)實(shí)戰(zhàn)之線上水果超市商城的實(shí)現(xiàn)
相關(guān)文章
Java深入了解數(shù)據(jù)結(jié)構(gòu)之棧與隊(duì)列的詳解
這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)中的棧與隊(duì)列,在Java的時(shí)候,對于棧與隊(duì)列的應(yīng)用需要熟練的掌握,這樣才能夠確保Java學(xué)習(xí)時(shí)候能夠有扎實(shí)的基礎(chǔ)能力。本文小編就來詳細(xì)說說Java中的棧與隊(duì)列,需要的朋友可以參考一下2022-01-01Spring循環(huán)依賴正確性及Bean注入的順序關(guān)系詳解
這篇文章主要給大家介紹了關(guān)于Spring循環(huán)依賴的正確性,以及Bean注入的順序關(guān)系的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-01-01Spring mvc防止數(shù)據(jù)重復(fù)提交的方法
這篇文章主要為大家詳細(xì)介紹了Spring mvc防止數(shù)據(jù)重復(fù)提交的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-11-11Java形參和實(shí)參的實(shí)例之Integer類型與Int類型用法說明
這篇文章主要介紹了Java形參和實(shí)參的實(shí)例之Integer類型與Int類型用法說明,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10Redis實(shí)現(xiàn)延遲隊(duì)列的全流程詳解
Redisson是Redis服務(wù)器上的分布式可伸縮Java數(shù)據(jù)結(jié)構(gòu),這篇文中主要為大家介紹了Redisson實(shí)現(xiàn)的優(yōu)雅的延遲隊(duì)列的方法,需要的可以參考一下2023-03-03Java實(shí)現(xiàn)在線五子棋對戰(zhàn)游戲(人機(jī)對戰(zhàn))
這篇文章主要為大家詳細(xì)介紹了如何利用Java語言實(shí)現(xiàn)在線五子棋對戰(zhàn)游戲(人機(jī)對戰(zhàn)),文中的實(shí)現(xiàn)步驟講解詳細(xì),感興趣的可以嘗試一下2022-09-09java使用文件流實(shí)現(xiàn)查看下載次數(shù)
這篇文章主要為大家詳細(xì)介紹了java使用文件流實(shí)現(xiàn)查看下載次數(shù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07