基于javaweb的在线宠物商店系统(java+ssm+mysql+tomcat)

运行环境

Java≥8、MySQL≥5.7、Tomcat≥8

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

基于javaweb的在线宠物商店系统(java+SSM+mysql+maven+tomcat)

一、项目简述

功能:本系统分用户前台和管理员后台。 系统包括用户的注册登录,狗狗的展示购物车添加以及下 单支付购买,后台有管理员用户,可以操作狗狗的品种, 狗狗的信息维护以及发货等等。 另外:系统采用MVC架构思想

二、项目运行

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

项目技术: JSP +Spring + SpringMVC + MyBatis + html+ css + JavaScript + JQuery + Ajax + layui+ maven等等。

后台相关接口:

/**

  • 后台相关接口

*/

@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;

/**

  • 管理员登录

  • @return

*/

@RequestMapping(“/login”)

public String login(Admins admin, HttpServletRequest request, HttpSession session) {

if (adminService.checkUser(admin.getUsername(), admin.getPassword())) {

session.setAttribute(“username”, admin.getUsername());

return “redirect:index”;

request.setAttribute(“msg”, “用户名或密码错误!”);

return “/admin/login.jsp”;

/**

  • 退出

  • @return

*/

@RequestMapping(“/logout”)

public String logout(HttpSession session) {

session.removeAttribute(“admin”);

return “/admin/login.jsp”;

/**

  • 后台首页

  • @return

*/

@RequestMapping(“/index”)

public String index(HttpServletRequest request) {

request.setAttribute(“msg”, “恭喜你! 登录成功了”);

return “/admin/index.jsp”;

/**

  • 订单列表

  • @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”, 1);

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”;

/**

  • 订单发货

  • @return

*/

@RequestMapping(“/orderDispose”)

public String orderDispose(int id, byte status,

@RequestParam(required=false, defaultValue=“1”) int page) {

orderService.dispose(id);

return “redirect:orderList?flag=1&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=1&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=1&status=”+status+“&page=”+page;

/**

  • 顾客管理

  • @return

*/

@RequestMapping(“/userList”)

public String userList(HttpServletRequest request,

@RequestParam(required=false, defaultValue=“1”) int page) {

request.setAttribute(“flag”, 2);

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”, 2);

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=2&page=”+page;

/**

  • 顾客密码重置页面

  • @return

*/

@RequestMapping(“/userRe”)

public String userRe(int id, HttpServletRequest request) {

request.setAttribute(“flag”, 2);

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?flag=2&page=”+page;

/**

  • 顾客更新

  • @return

*/

@RequestMapping(“/userEdit”)

public String userEdit(int id, HttpServletRequest request) {

request.setAttribute(“flag”, 2);

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=2&page=”+page;

/**

  • 顾客删除

  • @return

*/

@RequestMapping(“/userDelete”)

public String userDelete(Users user,

@RequestParam(required=false, defaultValue=“1”) int page) {

userService.delete(user);

return “redirect:userList?flag=2&page=”+page;

/**

  • 产品列表

  • @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”;

/**

  • 产品添加

  • @return

*/

@RequestMapping(“/goodAdd”)

public String goodAdd(HttpServletRequest request) {

request.setAttribute(“flag”, 3);

request.setAttribute(“typeList”, typeService.getList());

return “/admin/good_add.jsp”;

/**

  • 产品添加

  • @return

  • @throws Exception

*/

@RequestMapping(“/goodSave”)

public String goodSave(String name, int price, String intro, int stock, int typeId,

MultipartFile cover, MultipartFile image1, MultipartFile image2,

@RequestParam(required=false, defaultValue=“1”) int page) throws Exception {

Goods good = new Goods();

good.setName(name);

good.setPrice(price);

good.setIntro(intro);

good.setStock(stock);

good.setTypeId(typeId);

good.setCover(UploadUtil.fileUpload(cover));

good.setImage1(UploadUtil.fileUpload(image1));

good.setImage2(UploadUtil.fileUpload(image2));

goodService.add(good);

return “redirect:goodList?flag=3&page=”+page;

/**

  • 产品更新

  • @return

*/

@RequestMapping(“/goodEdit”)

public String goodEdit(int id, HttpServletRequest request) {

request.setAttribute(“flag”, 3);

request.setAttribute(“typeList”, typeService.getList());

request.setAttribute(“good”, goodService.get(id));

return “/admin/good_edit.jsp”;

/**

  • 产品更新

  • @return

  • @throws Exception

*/

@RequestMapping(“/goodUpdate”)

public String goodUpdate(int id, String name, int price, String intro, int stock, int typeId,

MultipartFile cover, MultipartFile image1, MultipartFile image2,

@RequestParam(required=false, defaultValue=“1”) int page) throws Exception {

Goods good = goodService.get(id);

good.setName(name);

good.setPrice(price);

good.setIntro(intro);

good.setStock(stock);

good.setTypeId(typeId);

if (Objects.nonNull(cover) && !cover.isEmpty()) {

good.setCover(UploadUtil.fileUpload(cover));

if (Objects.nonNull(image1) && !image1.isEmpty()) {

good.setImage1(UploadUtil.fileUpload(image1));

if (Objects.nonNull(image2) && !image2.isEmpty()) {

good.setImage2(UploadUtil.fileUpload(image2));

goodService.update(good);

return “redirect:goodList?flag=3&page=”+page;

/**

  • 产品删除

  • @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(“/typeList”)

public String typeList(HttpServletRequest request) {

request.setAttribute(“flag”, 4);

request.setAttribute(“typeList”, typeService.getList());

return “/admin/type_list.jsp”;

/**

  • 类目添加

  • @return

*/

@RequestMapping(“/typeSave”)

public String typeSave(Types type,

@RequestParam(required=false, defaultValue=“1”) int page) {

typeService.add(type);

return “redirect:typeList?flag=4&page=”+page;

/**

  • 类目更新

  • @return

*/

@RequestMapping(“/typeEdit”)

public String typeUp(int id, HttpServletRequest request) {

request.setAttribute(“flag”, 4);

request.setAttribute(“type”, typeService.get(id));

return “/admin/type_edit.jsp”;

/**

  • 类目更新

  • @return

*/

@RequestMapping(“/typeUpdate”)

public String typeUpdate(Types type,

@RequestParam(required=false, defaultValue=“1”) int page) {

typeService.update(type);

return “redirect:typeList?flag=4&page=”+page;

/**

  • 类目删除

  • @return

*/

@RequestMapping(“/typeDelete”)

public String typeDelete(Types type,

@RequestParam(required=false, defaultValue=“1”) int page) {

typeService.delete(type);

return “redirect:typeList?flag=4&page=”+page;

/**

  • 管理员列表

  • @return

*/

@RequestMapping(“/adminList”)

public String adminList(HttpServletRequest request,

@RequestParam(required=false, defaultValue=“1”) int page) {

request.setAttribute(“flag”, 5);

request.setAttribute(“adminList”, adminService.getList(page, rows));

request.setAttribute(“pageTool”, PageUtil.getPageTool(request, adminService.getTotal(), page, rows));

return “/admin/admin_list.jsp”;

/**

  • 管理员修改自己密码

  • @return

*/

@RequestMapping(“/adminRe”)

public String adminRe(HttpServletRequest request, HttpSession session) {

request.setAttribute(“flag”, 5);

request.setAttribute(“admin”, adminService.getByUsername(String.valueOf(session.getAttribute(“username”))));

return “/admin/admin_reset.jsp”;

/**

  • 管理员修改自己密码

  • @return

*/

@RequestMapping(“/adminReset”)

public String adminReset(Admins admin, HttpServletRequest request) {

request.setAttribute(“flag”, 5);

if (adminService.get(admin.getId()).getPassword().equals(SafeUtil.encode(admin.getPassword()))) {

admin.setPassword(SafeUtil.encode(admin.getPasswordNew()));

adminService.update(admin);

request.setAttribute(“admin”, admin);

request.setAttribute(“msg”, “修改成功!”);

}else {

request.setAttribute(“msg”, “原密码错误!”);

return “/admin/admin_reset.jsp”;

/**

  • 管理员添加

  • @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=5&page=”+page;

/**

  • 管理员修改

  • @return

*/

@RequestMapping(“/adminEdit”)

public String adminEdit(int id, HttpServletRequest request) {

request.setAttribute(“flag”, 5);

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=5&page=”+page;

/**

  • 管理员删除

  • @return

*/

@RequestMapping(“/adminDelete”)

public String adminDelete(Admins admin,

@RequestParam(required=false, defaultValue=“1”) int page) {

adminService.delete(admin);

return “redirect:adminList?flag=5&page=”+page;

用户相关接口:

/**

  • 用户相关接口

*/

@Controller

@RequestMapping(“/index”)

public class UserController{

private static final String INDENT_KEY = “order”;

@Resource

private UserService userService;

@Resource

private OrderService orderService;

@Resource

private GoodService goodService;

@Resource

private TypeService typeService;

/**

  • 注册用户

  • @return

*/

@RequestMapping(“/register”)

public String register(@RequestParam(required=false, defaultValue=“0”)int flag, Users user, Model model){

model.addAttribute(“typeList”, typeService.getList());

if(flag==-1) {

model.addAttribute(“flag”, 5); // 注册页面

return “/index/register.jsp”;

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 “redirect:login?flag=-1”; // 注册成功后转去登录

/**

  • 用户登录

  • @return

*/

@RequestMapping(“/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/login.jsp”;

if(userService.checkUser(user.getUsername(), user.getPassword())){

session.setAttribute(“user”, userService.get(user.getUsername()));

return “redirect:index”;

} else {

model.addAttribute(“msg”, “用户名或密码错误!”);

return “/index/login.jsp”;

/**

  • 注销登录

  • @return

*/

@RequestMapping(“/logout”)

public String logout(HttpSession session) {

session.removeAttribute(“user”);

session.removeAttribute(“order”);

return “/index/login.jsp”;

/**

  • 查看购物车

  • @return

*/

@RequestMapping(“/cart”)

public String cart(Model model) {

model.addAttribute(“typeList”, typeService.getList());

return “/index/cart.jsp”;

/**

  • 购买

  • @return

*/

@RequestMapping(“/buy”)

public @ResponseBody String buy(int goodid, HttpSession session){

Goods goods = goodService.get(goodid);

if (goods .getStock() <= 0) { // 库存不足

return “empty”;

Orders order = (Orders) session.getAttribute(INDENT_KEY);

if (order==null) {

session.setAttribute(INDENT_KEY, orderService.add(goods));

}else {

session.setAttribute(INDENT_KEY, orderService.addOrderItem(order, goods));

return “ok”;

/**

  • 减少

*/

@RequestMapping(“/lessen”)

public @ResponseBody String lessen(int goodid, HttpSession session){

Orders order = (Orders) session.getAttribute(INDENT_KEY);

if (order != null) {

session.setAttribute(INDENT_KEY, orderService.lessenIndentItem(order, goodService.get(goodid)));

return “ok”;

/**

  • 删除

*/

@RequestMapping(“/delete”)

public @ResponseBody String delete(int goodid, HttpSession session){

Orders order = (Orders) session.getAttribute(INDENT_KEY);

if (order != null) {

session.setAttribute(INDENT_KEY, orderService.deleteIndentItem(order, goodService.get(goodid)));

return “ok”;

/**

  • 提交订单

  • @return

*/

@RequestMapping(“/save”)

public String save(ServletRequest request, HttpSession session, Model model){

model.addAttribute(“typeList”, typeService.getList());

Users user = (Users) session.getAttribute(“user”);

if (user == null) {

request.setAttribute(“msg”, “请登录后提交订单!”);

return “/index/login.jsp”;

Orders sessionOrder = (Orders) session.getAttribute(INDENT_KEY);

if (sessionOrder != null) {

if (sessionOrder != null) {

for(Items item : sessionOrder.getItemList()){ // 检测商品库存(防止库存不足)

Goods product = goodService.get(item.getGoodId());

if(item.getAmount() > product.getStock()){

request.setAttribute(“msg”, “商品 [”+product.getName()+"] 库存不足! 当前库存数量: "+product.getStock());

return “/index/cart.jsp”;

sessionOrder.setUserId(user.getId());

sessionOrder.setUser(userService.get(user.getId()));

int orderid = orderService.save(sessionOrder); // 保存订单

session.removeAttribute(INDENT_KEY); // 清除购物车

return “redirect:topay?orderid=”+orderid;

request.setAttribute(“msg”, “处理失败!”);

return “/index/cart.jsp”;

/**

  • 支付页面

  • @return

*/

@RequestMapping(“/topay”)

public String topay(int orderid, ServletRequest request, Model model) {

model.addAttribute(“typeList”, typeService.getList());

request.setAttribute(“order”, orderService.get(orderid));

return “/index/pay.jsp”;

/**

  • 支付(模拟)

  • @return

*/

@RequestMapping(“/pay”)

public String pay(Orders order, Model model) {

model.addAttribute(“typeList”, typeService.getList());

orderService.pay(order);

return “redirect:payok?orderid=”+order.getId();

/**

  • 支付成功

  • @return

*/

@RequestMapping(“/payok”)

public String payok(int orderid, ServletRequest request, Model model) {

model.addAttribute(“typeList”, typeService.getList());

Orders order = orderService.get(orderid);

int paytype = order.getPaytype();

if(paytype == Orders.PAYTYPE_WECHAT || paytype == Orders.PAYTYPE_ALIPAY) {

request.setAttribute(“msg”, “订单[”+orderid+“]支付成功”);

}else {

request.setAttribute(“msg”, “订单[”+orderid+“]货到付款”);

return “/index/payok.jsp”;

/**

  • 查看订单

  • @return

*/

@RequestMapping(“/order”)

public String order(HttpSession session, Model model){

model.addAttribute(“flag”, 3);

model.addAttribute(“typeList”, typeService.getList());

Users user = (Users) session.getAttribute(“user”);

if (user == null) {

model.addAttribute(“msg”, “请登录后查看订单!”);

return “/index/login.jsp”;

List orderList = orderService.getListByUserid(user.getId());

if (orderList!=null && !orderList.isEmpty()) {

for(Orders order : orderList){

order.setItemList(orderService.getItemList(order.getId()));

model.addAttribute(“orderList”, orderList);

return “/index/order.jsp”;

/**

  • 个人信息

  • @return

*/

@RequestMapping(“/my”)

public String my(Users user, HttpSession session, Model model){

model.addAttribute(“flag”, 4);

model.addAttribute(“typeList”, typeService.getList());

Users userLogin = (Users) session.getAttribute(“user”);

if (userLogin == null) {

model.addAttribute(“msg”, “请先登录!”);

return “/index/login.jsp”;

// 进入个人中心

if (Objects.isNull(user) || Objects.isNull(user.getId())) {

return “/index/my.jsp”;

Users u = userService.get(user.getId());

// 修改资料

u.setName(user.getName());

u.setPhone(user.getPhone());

u.setAddress(user.getAddress());

userService.update(u); // 更新数据库

session.setAttribute(“user”, u); // 更新session

model.addAttribute(“msg”, “信息修改成功!”);

// 修改密码

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); // 更新数据库

session.setAttribute(“user”, u); // 更新session

model.addAttribute(“msg”, “密码修改成功!”);

}else {

model.addAttribute(“msg”, “原密码错误!”);

return “/index/my.jsp”;

后台登录验证拦截器:

/**

  • 后台登录验证拦截器

*/

public class AdminInterceptor extends HandlerInterceptorAdapter{

/**

  • 检测登录状态

*/

@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; // 登录验证通过

response.sendRedirect(“login.jsp”);

return false; // 其他情况一律拦截


基于javaweb的在线宠物商店系统(java+ssm+mysql+tomcat)相关推荐

  1. Java项目:在线宠物商店系统(java+SSM+mysql+maven+tomcat)

    源码获取:博客首页 "资源" 里下载! 一.项目简述 功能:本系统分用户前台和管理员后台. 系统包括用户的注册登录,狗狗的展示购物车添加以及下 单支付购买,后台有管理员用户,可以操 ...

  2. 基于javaweb的在线甜品商城系统(java+ssm+jsp+javascript+mysql)

    基于javaweb的在线甜品商城系统(java+ssm+jsp+javascript+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/m ...

  3. 基于javaweb的在线书城书店系统(jsp+ssm+mysql)

    基于javaweb的在线书城书店系统(jsp+ssm+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/myeclipse/sts等均可配 ...

  4. 基于javaweb的在线奶茶店系统(java+jsp+javascript+servlet+mysql)

    基于javaweb的在线奶茶店系统(java+jsp+javascript+servlet+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/ide ...

  5. 基于javaweb的在线蛋糕商城系统(java+jsp+jdbc+mysql)

    基于javaweb的在线蛋糕商城系统(java+jsp+jdbc+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/myeclipse/s ...

  6. 基于javaweb的在线点餐系统(java+springboot+mybatis+vue+mysql+redis)

    基于javaweb的在线点餐系统(java+springboot+mybatis+vue+mysql+redis) 运行环境 Java≥8.MySQL≥5.7.Node.js≥10 开发工具 后端:e ...

  7. 基于javaweb的在线车队货车管理系统(java+ssm+jsp+bootstrap+mysql)

    基于javaweb的在线车队货车管理系统(java+ssm+jsp+bootstrap+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/ ...

  8. 基于javaweb的网上图书商城系统(java+ssm+jsp+mysql+redis+jwt+shiro+rabbitmq+easyui)

    基于javaweb的网上图书商城系统(java+ssm+jsp+mysql+redis+jwt+shiro+rabbitmq+easyui) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥ ...

  9. 基于javaweb+jsp的零食商城系统(java+SSM+jsp+MySQL+EasyUI)

    基于javaweb+jsp的零食商城系统(java+SSM+jsp+MySQL+EasyUI) 系统主要实现的功能有:用户浏览商品.加入商品到购物车.登录注册.提交订单,会员中心修改个人信息.查看订单 ...

最新文章

  1. flask_restplus的fields中怎么定义字典_Quora | 成功的定义是什么?
  2. 解决Inno Setup制作安装包无法创建桌面快捷方式的问题
  3. Google 团队效能研究 | 为什么雇用最聪明的人是远远不够的?
  4. 【深度学习】CVPR 2021 全部论文链接公布!最新1660篇论文合集!附下载链接
  5. Maven仓库搭建(二):GitHub、又拍云、七牛云存储
  6. 飞畅科技-工业级以太网交换机常见问题解析!
  7. AliOS Things SIG BLE Mesh网络的介绍和搭建
  8. java 离散算法_用JAVA语言实现离散数学算法
  9. Qt on Android 蓝牙通信开发
  10. 专科python应届生工资多少-阿里员工吐槽:应届生工资太猛,被倒挂,后悔接阿里侮辱性offer...
  11. kotlin_Kotlin阵列
  12. c++实现LSTM,ADAM优化,预测大写数字
  13. [Canvas] 手机拍照后,等比例压缩并上传图片
  14. MS-DOS 命令例子
  15. Java/Android 进程与线程之 多线程开发(二)
  16. 3.1.1 docker入门
  17. 鼠标放到图片上图片就变大
  18. html padding顺序,html中padding用法
  19. 程序员、大数据、算法黑科技
  20. PowerApps教程09-下拉列表以及联动筛选

热门文章

  1. 好用的商业智能bi软件
  2. kaldi在linux上编译,Ubuntu 12.04下编译安装Kaldi
  3. 前端学习笔记3-CSS入门一
  4. HTML语义化 表格
  5. JAVA封装|继承|多态
  6. mac系统 TurboCollage Pro 7.2.6 直装版 (图片拼图相册制作工具)
  7. 关于Internet的92问与答
  8. 2012自学CCNP路由与交换之二思科网络产品体系
  9. python中的继承和多继承及抽象
  10. 深度剖析BOSS直聘招股书:为何增长?变局在哪?