<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
該專案為前後臺專案,分為普通使用者與管理員兩種角色,前臺普通使用者登入,後臺管理員登入;
管理員角色包含以下功能:
管理員登入,使用者管理,鮮花類別管理,鮮花管理,訂單管理並行貨,留言管理,系統公告管理等功能。
使用者角色包含以下功能:
使用者首頁,使用者註冊登入,檢視鮮花詳情,加入購物車,確認訂單,檢視我的訂單,商城留言板,商城公告等功能。
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. 後端:Spring+SpringMVC+Mybatis
2. 前端:JSP+jQuery+Ajax
1. 使用Navicat或者其它工具,在mysql中建立對應名稱的資料庫,並匯入專案的sql檔案;
2. 使用IDEA/Eclipse/MyEclipse匯入專案,Eclipse/MyEclipse匯入時,若為maven專案請選擇maven;若為maven專案,匯入成功後請執行maven clean;maven install命令,然後執行;
3. 將專案中jdbc.properties組態檔中的資料庫設定改為自己的設定;
4. 執行專案,輸入localhost:8080/ 登入
使用者賬號/密碼: user/123456
管理員賬號/密碼:admin/admin
/** * 商品 **/ @RestController @RequestMapping("flower") public class FlowerController { @Autowired FlowersService flowerService; @Autowired FlowersDao flowersDao; @RequestMapping("/test") R test() { R r = new R(); return r; } //find @RequestMapping("/find") R find(@RequestParam("page") int page, @RequestParam("searchKey") String searchKey, @RequestParam("searchType") String searchType) { R r = new R(); List<Flower> flowers = flowerService.find(searchKey, searchType); if (flowers == null) { return r.setCode(2000); } return getResponse(flowers, page, Constant.SHOW_PAGE_SIZE, r); } // 管理員查詢所有 @RequestMapping("/findAll") R findAll(@RequestParam("page") int page, @RequestParam("searchKey") String searchKey) { R r = new R(); List<Flower> flowers = flowerService.findAll(searchKey); if (flowers == null) { return r.setCode(2000); } return getResponse(flowers, page, Constant.PAGE_SIZE, r); } // 返回結果 private R getResponse(List<Flower> flowers, int page, int pageSize, R r) { Map<String, Object> map = new HashMap<>(); List<Flower> items = flowers.size() >= page * pageSize ? flowers.subList((page - 1) * pageSize, page * pageSize) : flowers.subList((page - 1) * pageSize, flowers.size()); int len = flowers.size() % pageSize == 0 ? flowers.size() / pageSize : (flowers.size() / pageSize + 1); for (Flower item : items) { if (item.getImg_guid() == null) { item.setImg_guid(Constant.DEFAULT_IMG); } item.setImg_guid(Constant.IMG_USE_PATH + item.getImg_guid()); } map.put("items", items); map.put("len", len); return r.setCode(2000).setData(map); } @RequestMapping("/create") R create(@RequestBody Flower flower) { R r = new R(); int ans = flowerService.add(flower); if (ans == 1) { return r.setCode(2000).setMsg(HttpMsg.ADD_FLOWER_OK); } return r.setCode(4000).setMsg(HttpMsg.ADD_FLOWER_FAILED); } @RequestMapping("/update") R update(@RequestBody Flower flower) { R r = new R(); int ans = flowerService.update(flower); if (ans >= 0) { return r.setCode(2000).setMsg(HttpMsg.UPDATE_FLOWER_OK); } return r.setCode(4000).setMsg(HttpMsg.UPDATE_FLOWER_FAILED); } @RequestMapping("/changeState") R changeState(@RequestBody Flower flower) { R r = new R(); flowersDao.changeState(flower); String msg = flower.getState() == 1?HttpMsg.GOODS_UP_OK:HttpMsg.GOODS_DOWN_OK; return r.setCode(2000).setMsg(msg); } // 儲存上傳的圖片 @RequestMapping("/updateImg") R updateImg(@RequestParam("file") MultipartFile file) { R r = new R(); // 只接收 jpg/png 圖片 String filename = file.getOriginalFilename(); if (!filename.endsWith(".jpg") && !filename.endsWith(".png")){ return r.setCode(4000).setMsg(HttpMsg.ERROR_FILE_TYPE); } String img_guid = UUID.randomUUID().toString().replaceAll("-", "") + ".jpg"; try { savePic(file.getInputStream(), img_guid); return r.setCode(2000).setMsg(HttpMsg.UPDATE_PIC_OK).setData(img_guid); } catch (IOException e) { return r.setCode(4000).setMsg(HttpMsg.UPDATE_PIC_FAILED); } } @PutMapping("/updateImgGuid") R updateImgGuid(@RequestParam("guid") String guid, @RequestParam("id") int id) { R r = new R(); int ans = flowerService.updateImg(guid, id); if (ans == 1) { return r.setCode(2000).setMsg(HttpMsg.UPDATE_PIC_OK); } return r.setCode(4000).setMsg(HttpMsg.UPDATE_PIC_FAILED); } @DeleteMapping("/delete") R delete(@RequestParam("id") int id) { R r = new R(); int ans = flowerService.delete(id); if (ans == 1) { return r.setCode(2000).setMsg(HttpMsg.DELETE_FLOWER_OK); } return r.setCode(4000).setMsg(HttpMsg.DELETE_FLOWER_FAILED); } private void savePic(InputStream inputStream, String fileName) { OutputStream os = null; try { String path = Constant.IMG_PATH; // 1K的資料緩衝 byte[] bs = new byte[1024]; // 讀取到的資料長度 int len; // 輸出的檔案流儲存到本地檔案 os = new FileOutputStream(new File(path + fileName)); // 開始讀取 while ((len = inputStream.read(bs)) != -1) { os.write(bs, 0, len); } } catch (Exception e) { e.printStackTrace(); } finally { // 完畢,關閉所有連結 try { os.close(); inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } }
/** * 使用者 **/ @RestController @RequestMapping("order") public class OrderController { @Autowired OrderService orderService; @Autowired UserDao userDao; @Autowired OrderDao orderDao; @Autowired FlowersDao flowersDao; @RequestMapping("/test") R test() { R r = new R(); return r.setCode(4000).setMsg(Constant.IMG_PATH).setData(orderDao.findAll(null)); } @RequestMapping("/queryByAccount") R queryByAccount(@RequestParam("account") String account) { R r = new R(); if (StringUtil.isEmpty(account)) { return r.setCode(4000).setMsg(HttpMsg.INVALID_PARAM); } List<Order> orders = orderService.queryByAccount(account); return r.setCode(2000).setData(orders); } @RequestMapping("/find") R find(@RequestParam("page") int page, @RequestParam("searchKey") String searchKey, @RequestParam("account") String account) { R r = new R(); Map<String, Object> map = new HashMap<>(); List<Order> orders = orderService.find(searchKey, account); if (orders == null) { return r.setCode(2000); } map.put("items", orders); map.put("len", orders.size()); return r.setCode(2000).setData(map); } @RequestMapping("/findAll") R findAll(@RequestParam("page") int page, @RequestParam("searchKey") String searchKey) { R r = new R(); Map<String, Object> map = new HashMap<>(); List<Order> orders = orderService.findAll(searchKey); if (orders == null) { return r.setCode(2000); } List<Order> items = orders.size() >= page * Constant.PAGE_SIZE ? orders.subList((page - 1) * Constant.PAGE_SIZE, page * Constant.PAGE_SIZE) : orders.subList((page - 1) * Constant.PAGE_SIZE, orders.size()); int len = orders.size() % Constant.PAGE_SIZE == 0 ? orders.size() / Constant.PAGE_SIZE : (orders.size() / Constant.PAGE_SIZE + 1); List<OrderVo> vos = new ArrayList<>(); for (Order item : items) { User user = userDao.queryById(item.getUid()); OrderVo vo = new OrderVo(); vo.setAddress(user.getAddress()).setPhone(user.getPhone()).setUsername(user.getName()) .setAmount(item.getAmount()).setFlower(item.getFlower()).setId(item.getId()) .setUid(item.getUid()).setOrder_guid(item.getOrder_guid()).setPrice(item.getPrice()) .setState(item.getState()); vos.add(vo); } map.put("items", vos); map.put("len", len); return r.setCode(2000).setData(map); } @RequestMapping("/update") R update(@RequestBody Order order) { R r = new R(); int ans = orderService.update(order); if (ans >= 0) { return r.setCode(2000).setMsg(HttpMsg.UPDATE_USER_OK); } return r.setCode(4000).setMsg(HttpMsg.UPDATE_USER_FAILED); } @RequestMapping("/changeState") R changeState(@RequestBody Order order) { orderDao.changeState(order); return new R().setCode(2000).setMsg(HttpMsg.UPDATE_ORDER_OK); } @DeleteMapping("/delete") R delete(@RequestParam("id") int id) { R r = new R(); int ans = orderService.delete(id); if (ans == 1) { return r.setCode(2000).setMsg(HttpMsg.DELETE_USER_OK); } return r.setCode(4000).setMsg(HttpMsg.DELETE_USER_FAILED); } }
/** * 使用者 **/ @RestController @RequestMapping("user") public class UserController { @Autowired UserService userService; @Autowired UserDao dao; @RequestMapping("/test") R test() { R r = new R(); return r.setCode(4000).setMsg(Constant.IMG_PATH).setData(dao.findAll()); } @RequestMapping("/queryInfoByAccount") R queryInfoByAccount(@RequestParam("account") String account) { R r = new R(); if (StringUtil.isEmpty(account)){ return r.setCode(4000).setMsg(HttpMsg.INVALID_PARAM); } User loginUser = userService.queryInfo(account); if (loginUser == null){ return r.setCode(4000).setMsg(HttpMsg.INVALID_USER); } return r.setCode(2000).setData(loginUser); } @RequestMapping("/find") R find(@RequestParam("page") int page, @RequestParam("searchKey") String searchKey) { R r = new R(); Map<String, Object> map = new HashMap<>(); List<User> users = userService.find(searchKey); if (users == null) { return r.setCode(2000); } List<User> items = users.size() >= page * Constant.PAGE_SIZE ? users.subList((page - 1) * Constant.PAGE_SIZE, page * Constant.PAGE_SIZE) : users.subList((page - 1) * Constant.PAGE_SIZE, users.size()); int len = users.size() % Constant.PAGE_SIZE == 0 ? users.size() / Constant.PAGE_SIZE : (users.size() / Constant.PAGE_SIZE + 1); map.put("items", items); map.put("len", len); return r.setCode(2000).setData(map); } @RequestMapping("/create") R create(@RequestBody User user) { R r = new R(); int ans = userService.add(user); if (ans == 1) { return r.setCode(2000).setMsg(HttpMsg.ADD_USER_OK); } return r.setCode(4000).setMsg(HttpMsg.ADD_USER_FAILED); } @RequestMapping("/update") R update(@RequestBody User user) { R r = new R(); int ans = userService.update(user); if (ans >= 0) { return r.setCode(2000).setMsg(HttpMsg.UPDATE_USER_OK); } return r.setCode(4000).setMsg(HttpMsg.UPDATE_USER_FAILED); } @DeleteMapping("/delete") R delete(@RequestParam("id") int id) { R r = new R(); int ans = userService.delete(id); if (ans == 1) { return r.setCode(2000).setMsg(HttpMsg.DELETE_USER_OK); } return r.setCode(4000).setMsg(HttpMsg.DELETE_USER_FAILED); } }
以上就是Java實戰之鮮花商城系統的實現的詳細內容,更多關於Java鮮花商城系統的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45