Java如何实现玩具商城的前台与后台

Java如何实现玩具商城的前台与后台

这篇文章将为大家详细讲解有关Java如何实现玩具商城的前台与后台,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

一、项目简述

本系统主要实现的功能有:
网上商城系统,前台+后台管理,用户注册,登录,商品展示,分组展示,搜索,收货地址管理,购物车管理,添加,购买,个人信息修改。订单查询等等,后台商品管理,分类管理,库存管理,订单管理,用户管理,信息修改等等。

二、项目运行

环境配置:

Jdk1.8 + Tomcat8.5 + mysql + Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)

项目技术:

Springboot+ SpringMVC + MyBatis + Jsp + Html+ JavaScript + JQuery + Ajax + maven等等

后台管理代码:

@ControllerpublicclassIndexController{/***网站首页**/@GetMapping("/")publicStringindex(){return"/index";}/***联系我们**/@GetMapping("/contacts")publicStringcontacts(){return"/common/contacts";}/***关于我们**/@GetMapping("/about")publicStringabout(){return"/common/about";}/***后台管理首页**/@GetMapping("/admin/index")publicStringadminindex(HttpSessionsession,HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException{Stringadmin=(String)session.getAttribute("admin");/**拦截器:如果不是管理员,则进行重定向*/if(StringUtils.isEmpty(admin)){response.sendRedirect(request.getContextPath()+"/");//重定向}return"/admin/index";}/***用户登录注册**/@GetMapping("/login")publicStringlogin(){return"/user/logreg";}/***用户忘记密码**/@GetMapping("/forget")publicStringforget(){return"user/forget";}/***个人中心**/@GetMapping("/user/center")publicStringusercenter(HttpSessionsession,HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException{Stringuserid=(String)session.getAttribute("userid");/**拦截器:如果不是用户角色登录,则进行重定向*/if(StringUtils.isEmpty(userid)){response.sendRedirect(request.getContextPath()+"/");//重定向}return"/user/user-center";}/***用户修改密码**/@RequiresPermissions("user:userinfo")@GetMapping("/user/pass")publicStringuserinfo(){return"/user/updatepass";}/***用户更换手机号**/@RequiresPermissions("user:userinfo")@GetMapping("/user/phone")publicStringuserphone(){return"/user/updatephone";}/***用户商品列表**/@GetMapping("/user/product")publicStringuserproduct(){return"/user/product/productlist";}/***通知消息**/@GetMapping("/user/message")publicStringcommonmessage(){return"/user/message/message";}/***弹出式通知消息**/@GetMapping("/user/alertmessage")publicStringalertmessage(){return"/user/message/alertmessage";}/***跳转到产品清单界面**/@GetMapping("/product-listing")publicStringtoproductlisting(){return"/common/product-listing";}/***跳转到产品清单搜索界面**/@GetMapping("/product-search")publicStringtoProductSearchs(Stringkeys,ModelMapmodelMap){if(keys==null){return"/error/404";}modelMap.put("keys",keys);return"/common/product-search";}/**用户个人中心默认展示图*/@GetMapping("/home/console")publicStringhomeconsole(){return"/admin/home/console";}/***管理员首页默认展示图**/@GetMapping("/echars/console")publicStringechars(){return"/admin/echars/console";}@GetMapping("/app/message/index")publicStringappmessageindex(){return"/admin/app/message/index";}/***用户收藏列表**/@GetMapping("/user/collect")publicStringusercollect(){return"/user/collect/collectlist";}/***用户售出记录**/@GetMapping("/user/sold")publicStringsold(){return"/user/sold/soldrecord";}/***销量列表**/@GetMapping("/admin/sold")publicStringadminSold(){return"/admin/sold/soldrecord";}/***首页公告清单**/@GetMapping("/user/newslist")publicStringuserNews(){return"/common/listnews";}/***管理员公告列表**/@GetMapping("/admin/newslist")publicStringadminNews(){return"/admin/news/newslist";}}

订单和商品服务类:

@WebServlet("/backstage_goodsServlet")publicclassGoodsServletextendsHttpServlet{GoodsServiceservice=newGoodsService();@Overrideprotectedvoidservice(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{Stringaction=req.getParameter("action");switch(action){case"addGoods":addGoods(req,resp);break;case"getGoodsList":getGoodsList(req,resp);break;case"getGoodsListByName":getGoodsListByName(req,resp);break;case"deleteGoods":deleteGoods(req,resp);break;case"toGoodsUpdatePage":toGoodsUpdatePage(req,resp);break;case"updateGoods":updateGoods(req,resp);break;case"upGoodsImage":upGoodsImage(req,resp);break;case"fastbuy":sendOrder(req,resp);break;}}/***提交订单*@throwsIOException*/publicvoidsendOrder(HttpServletRequestreq,HttpServletResponseresp)throwsIOException{//设置请求编码格式:req.setCharacterEncoding("utf-8");//设置响应编码格式resp.setContentType("text/html;charset=utf-8");SimpleDateFormatdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");//设置日期格式Ordersorder=newOrders();order.setNumber(order.getRandomString(10));order.setTime(df.format(newDate()));order.setName(req.getParameter("recipients"));order.setAddress(req.getParameter("address"));order.setPhone(req.getParameter("phone"));order.setAddress_label(req.getParameter("addressLabel"));order.setSex(req.getParameter("sex"));order.setUser("sjb");order.setGoods_id(99);order.setGoods_num(3);order.setGoods_status(1);intd=service.addOrder(order);try{if(d>0){JSONResultok=JSONResult.ok();resp.getWriter().println(JsonUtil.javaObjectToJson(ok));}else{JSONResulterror=JSONResult.errorMsg("订单提交失败!");resp.getWriter().println(JsonUtil.javaObjectToJson(error));}}catch(Exceptione){e.printStackTrace();}}/***保存商品*@throwsIOException*/publicvoidaddGoods(HttpServletRequestreq,HttpServletResponseresp)throwsIOException{//设置请求编码格式:req.setCharacterEncoding("utf-8");//设置响应编码格式resp.setContentType("text/html;charset=utf-8");FileUploadUtilupFile=newFileUploadUtil();ServletContextservletContext=req.getSession().getServletContext();List<FileItem>items=upFile.getRequsetFileItems(req,servletContext);//保存所有用户提交的表单数据的mapMap<String,String>formData=newHashMap<>();StringsavePath=newFile(getServletContext().getRealPath("/")).getParentFile().getParentFile().getPath()+"/imgs";try{//遍历for(FileItemfile:items){if(!file.isFormField()){StringfileSuffix=FileUploadUtil.getFileSuffix(file).toUpperCase();//必须是jpg或png图片文件才能进行上传操作if("JPG".equals(fileSuffix)||"PNG".equals(fileSuffix)){//生成新图片名StringimgName=FileUploadUtil.getImgNewName(fileSuffix);FileUploadUtil.saveFile(file,savePath,imgName);formData.put("imgUrl",imgName);}}else{//非文件数据存入formData.put(file.getFieldName(),file.getString("utf-8"));}}}catch(UnsupportedEncodingExceptione){e.printStackTrace();}Goodsgoods=newGoods();goods.setName(formData.get("goodsName"));goods.setNum(Integer.parseInt(formData.get("num")));goods.setPrice(Double.parseDouble(formData.get("price")));goods.setImgurl(formData.get("imgUrl"));goods.setType(formData.get("type"));goods.setDescription(formData.get("description"));goods.setColor(formData.get("color"));goods.setMemory(formData.get("memory"));goods.setCreateDate(newSimpleDateFormat("yyyy-MM-dd").format(newDate()));intd=service.addGoods(goods);try{if(d>0){JSONResultok=JSONResult.ok();resp.getWriter().println(JsonUtil.javaObjectToJson(ok));}else{JSONResulterrorMsg=JSONResult.errorMsg("添加失败,请重试");resp.getWriter().println(JsonUtil.javaObjectToJson(errorMsg));}}catch(Exceptione){e.printStackTrace();}}/***向前端页面返回商品数据列表*/publicvoidgetGoodsList(HttpServletRequestreq,HttpServletResponseresp){List<Goods>allGoods=service.getAllGoods();req.setAttribute("goodsList",allGoods);try{req.getRequestDispatcher("/backstage/tgls/goodsManage/goods_list.jsp").forward(req,resp);}catch(ServletExceptione){e.printStackTrace();}catch(IOExceptione){e.printStackTrace();}}/***@throwsIOException*根据商品名查询商品*@paramreq*@paramresp*@throws*/publicvoidgetGoodsListByName(HttpServletRequestreq,HttpServletResponseresp)throwsIOException{//设置请求编码格式:req.setCharacterEncoding("utf-8");//设置响应编码格式resp.setContentType("text/html;charset=utf-8");Stringname=req.getParameter("goodsName");Stringtype=req.getParameter("type");Map<String,String>parmas=newHashMap<>();parmas.put("name",name);parmas.put("type",type);List<Goods>list=service.getGoodsByName(parmas);try{if(list!=null){JSONResultok=JSONResult.ok(list);resp.getWriter().println(JsonUtil.javaObjectToJson(ok));}else{JSONResulterrorMsg=JSONResult.errorMsg("未获取到任何数据,请重试");resp.getWriter().println(JsonUtil.javaObjectToJson(errorMsg));}}catch(Exceptione){e.printStackTrace();}}/***修改商品时,获取此商品的全部数据,并返回至修改页面*/publicvoidtoGoodsUpdatePage(HttpServletRequestreq,HttpServletResponseresp){intid=Integer.parseInt(req.getParameter("id"));Goodsgoods=service.getGoodsInfoById(id);req.setAttribute("goods",goods);try{req.getRequestDispatcher("/backstage/tgls/goodsManage/goods_update.jsp").forward(req,resp);}catch(ServletExceptione){e.printStackTrace();}catch(IOExceptione){e.printStackTrace();}}/***修改商品信息时,如果有修改图片,先将图片进行修改*@throwsIOException*/publicvoidupGoodsImage(HttpServletRequestreq,HttpServletResponseresp)throwsIOException{//设置请求编码格式:req.setCharacterEncoding("utf-8");//设置响应编码格式resp.setContentType("text/html;charset=utf-8");FileUploadUtilupFile=newFileUploadUtil();ServletContextservletContext=req.getSession().getServletContext();List<FileItem>items=upFile.getRequsetFileItems(req,servletContext);StringsavePath=newFile(getServletContext().getRealPath("/")).getParentFile().getParentFile().getPath()+"/imgs";StringimgName=null;try{//遍历for(FileItemfile:items){if(!file.isFormField()){StringfileSuffix=FileUploadUtil.getFileSuffix(file);//必须是jpg或png图片文件才能进行上传操作if("jpg".equals(fileSuffix)||"png".equals(fileSuffix)){//生成新图片名imgName=FileUploadUtil.getImgNewName(fileSuffix);FileUploadUtil.saveFile(file,savePath,imgName);}}}intd=service.updateGoodsImgById(imgName,Integer.parseInt(req.getParameter("id")));if(d>0){JSONResultok=JSONResult.ok(imgName);resp.getWriter().println(JsonUtil.javaObjectToJson(ok));}else{JSONResulterrorMsg=JSONResult.errorMsg("修改失败,请重试");resp.getWriter().println(JsonUtil.javaObjectToJson(errorMsg));}}catch(Exceptione){e.printStackTrace();}}/***修改商品*@throwsIOException*/publicvoidupdateGoods(HttpServletRequestreq,HttpServletResponseresp)throwsIOException{//设置请求编码格式:req.setCharacterEncoding("utf-8");//设置响应编码格式resp.setContentType("text/html;charset=utf-8");Goodsgoods=newGoods();goods.setId(Integer.parseInt(req.getParameter("id")));goods.setName(req.getParameter("goodsName"));goods.setNum(Integer.parseInt(req.getParameter("num")));goods.setPrice(Double.parseDouble(req.getParameter("price")));goods.setType(req.getParameter("type"));goods.setColor(req.getParameter("color"));goods.setMemory(req.getParameter("memory"));goods.setDescription(req.getParameter("description"));intd=service.updateGoodsById(goods);try{if(d>0){JSONResultok=JSONResult.ok();resp.getWriter().println(JsonUtil.javaObjectToJson(ok));}else{JSONResulterrorMsg=JSONResult.errorMsg("修改失败,请重试");resp.getWriter().println(JsonUtil.javaObjectToJson(errorMsg));}}catch(Exceptione){e.printStackTrace();}}/***删除商品*@throwsIOException*/publicvoiddeleteGoods(HttpServletRequestreq,HttpServletResponseresp)throwsIOException{//设置请求编码格式:req.setCharacterEncoding("utf-8");//设置响应编码格式resp.setContentType("text/html;charset=utf-8");intid=Integer.parseInt(req.getParameter("id"));intd=service.deleteGoodsById(id);try{if(d>0){JSONResultok=JSONResult.ok();resp.getWriter().println(JsonUtil.javaObjectToJson(ok));}else{JSONResulterrorMsg=JSONResult.errorMsg("删除失败,请重试");resp.getWriter().println(JsonUtil.javaObjectToJson(errorMsg));}}catch(Exceptione){e.printStackTrace();}}}

订单服务类:

@WebServlet("/backstage_ordersServlet")publicclassOrdersServletextendsHttpServlet{OrdersServiceservice=newOrdersService();@Overrideprotectedvoidservice(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{Stringaction=req.getParameter("action");System.out.println(action);switch(action){case"getOrdersList":getOrdersList(req,resp);break;case"getOrdersListByName":getOrdersListByName(req,resp);break;case"deleteOrders":deleteOrders(req,resp);break;case"deleteAllOrders":deleteAllOrders(req,resp);break;case"toOrdersUpdatePage":toOrdersUpdatePage(req,resp);break;case"updateOrders":updateOrders(req,resp);break;case"fastbuy":sendOrder(req,resp);break;}}/**删除全部订单*/privatevoiddeleteAllOrders(HttpServletRequestreq,HttpServletResponseresp)throwsIOException{//设置请求编码格式:req.setCharacterEncoding("utf-8");//设置响应编码格式resp.setContentType("text/html;charset=utf-8");//TODO自动生成的方法存根intd=service.deleteAllOrders();try{if(d>0){JSONResultok=JSONResult.ok();resp.getWriter().println(JsonUtil.javaObjectToJson(ok));}else{JSONResulterrorMsg=JSONResult.errorMsg("删除失败,请重试");resp.getWriter().println(JsonUtil.javaObjectToJson(errorMsg));}}catch(Exceptione){e.printStackTrace();}}/***提交订单*@throwsIOException*/publicvoidsendOrder(HttpServletRequestreq,HttpServletResponseresp)throwsIOException{//设置请求编码格式:req.setCharacterEncoding("utf-8");//设置响应编码格式resp.setContentType("text/html;charset=utf-8");SimpleDateFormatdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");//设置日期格式Useruser=(User)req.getSession().getAttribute("user");Ordersorder=newOrders();order.setNumber(order.getRandomString(10));order.setTime(df.format(newDate()));order.setName(req.getParameter("recipients"));order.setAddress(req.getParameter("address"));order.setPhone(req.getParameter("phone"));order.setAddress_label(req.getParameter("addressLabel"));order.setSex(req.getParameter("sex"));order.setUser(user.getUserName());order.setGoods_id(Integer.parseInt(req.getParameter("id")));order.setGoods_num(Integer.parseInt(req.getParameter("num")));order.setGoods_status(1);intd=service.addOrder(order);try{if(d>0){JSONResultok=JSONResult.ok();resp.getWriter().println(JsonUtil.javaObjectToJson(ok));}else{JSONResulterror=JSONResult.errorMsg("订单提交失败!");resp.getWriter().println(JsonUtil.javaObjectToJson(error));}}catch(Exceptione){e.printStackTrace();}}/***向前端页面返回订单数据列表*/publicvoidgetOrdersList(HttpServletRequestreq,HttpServletResponseresp){List<Orders>allOrders=service.getAllOrders();req.setAttribute("ordersList",allOrders);try{req.getRequestDispatcher("/backstage/tgls/ordersManage/orders_list.jsp").forward(req,resp);}catch(ServletExceptione){e.printStackTrace();}catch(IOExceptione){e.printStackTrace();}}/***根据订单名查询商品(注意!类别没改)*@paramreq*@paramresp*@throwsIOException*/publicvoidgetOrdersListByName(HttpServletRequestreq,HttpServletResponseresp)throwsIOException{//设置请求编码格式:req.setCharacterEncoding("utf-8");//设置响应编码格式resp.setContentType("text/html;charset=utf-8");Stringname=req.getParameter("OrdersUser");//Stringtype=req.getParameter("type");Map<String,String>parmas=newHashMap<>();parmas.put("name",name);//parmas.put("type",type);List<Orders>list=service.getOrdersByName(parmas);try{if(list!=null){JSONResultok=JSONResult.ok(list);resp.getWriter().println(JsonUtil.javaObjectToJson(ok));}else{JSONResulterrorMsg=JSONResult.errorMsg("未获取到任何数据,请重试");resp.getWriter().println(JsonUtil.javaObjectToJson(errorMsg));}}catch(Exceptione){e.printStackTrace();}}/***修改订单时,获取此订单的全部数据,并返回至修改页面*/publicvoidtoOrdersUpdatePage(HttpServletRequestreq,HttpServletResponseresp){intid=Integer.parseInt(req.getParameter("id"));Ordersorders=service.getOrdersInfoById(id);req.setAttribute("orders",orders);try{req.getRequestDispatcher("/backstage/tgls/ordersManage/orders_update.jsp").forward(req,resp);}catch(ServletExceptione){e.printStackTrace();}catch(IOExceptione){e.printStackTrace();}}/***修改订单*@throwsIOException*/publicvoidupdateOrders(HttpServletRequestreq,HttpServletResponseresp)throwsIOException{//设置请求编码格式:req.setCharacterEncoding("utf-8");//设置响应编码格式resp.setContentType("text/html;charset=utf-8");Ordersorders=newOrders();orders.setId(Integer.parseInt(req.getParameter("id")));orders.setNumber(req.getParameter("number"));orders.setUser(req.getParameter("user"));orders.setTime(req.getParameter("time"));orders.setName(req.getParameter("name"));orders.setSex(req.getParameter("sex"));orders.setAddress(req.getParameter("address"));orders.setPhone(req.getParameter("phone"));orders.setAddress_label(req.getParameter("address_label"));orders.setGoods_id(Integer.parseInt(req.getParameter("goods_id")));orders.setGoods_num(Integer.parseInt(req.getParameter("goods_num")));orders.setGoods_status(Integer.parseInt(req.getParameter("goods_status")));System.out.println(orders);intd=service.updateOrdersById(orders);System.out.println(d);try{if(d>0){JSONResultok=JSONResult.ok();resp.getWriter().println(JsonUtil.javaObjectToJson(ok));}else{JSONResulterrorMsg=JSONResult.errorMsg("修改失败,请重试");resp.getWriter().println(JsonUtil.javaObjectToJson(errorMsg));}}catch(Exceptione){e.printStackTrace();}}/***删除订单*@throwsUnsupportedEncodingException*/publicvoiddeleteOrders(HttpServletRequestreq,HttpServletResponseresp)throwsUnsupportedEncodingException{//设置请求编码格式:req.setCharacterEncoding("utf-8");//设置响应编码格式resp.setContentType("text/html;charset=utf-8");intid=Integer.parseInt(req.getParameter("id"));intd=service.deleteOrdersById(id);try{if(d>0){JSONResultok=JSONResult.ok();resp.getWriter().println(JsonUtil.javaObjectToJson(ok));}else{JSONResulterrorMsg=JSONResult.errorMsg("删除失败,请重试");resp.getWriter().println(JsonUtil.javaObjectToJson(errorMsg));}}catch(Exceptione){e.printStackTrace();}}}

用户服务类:

@WebServlet("/backstage_userServlet")publicclassUserServletextendsHttpServlet{UserServiceservice=newUserService();@Overrideprotectedvoidservice(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{Stringaction=req.getParameter("action");switch(action){case"login":login(req,resp);break;case"modifyPassword":modifyPassword(req,resp);break;case"checkOldPassword":checkOldPassword(req,resp);break;case"afterModifyPassword":afterModifyPassword(req,resp);break;case"logout":logout(req,resp);break;}}/***用户登录*@throwsIOException*/publicvoidlogin(HttpServletRequestreq,HttpServletResponseresp)throwsIOException{//设置请求编码格式:req.setCharacterEncoding("utf-8");//设置响应编码格式resp.setContentType("text/html;charset=utf-8");//获取前端页面传来的用户名StringuserName=req.getParameter("userName");//获取前端页面传来的密码Stringpassword=req.getParameter("password");//1、先验证该用户的角色是否为管理员StringuserRole=service.getUserRoleByName(userName);try{if(!"admin".equals(userRole)){JSONResulterrorMsg=JSONResult.errorMsg("暂无登录权限");resp.getWriter().println(JsonUtil.javaObjectToJson(errorMsg));}else{//2、获取用户数据进行用户名和密码验证Useruser=service.getUserByNameAndPassword(userName,password);if(user!=null){//将用户数据保存到session作用域中,方便在后续的操作中使用用户数据req.getSession().setAttribute("user",user);JSONResultok=JSONResult.ok();resp.getWriter().println(JsonUtil.javaObjectToJson(ok));}else{//将错误信息封装在结果集中JSONResultresult=JSONResult.errorMsg("用户名或密码错误,请重试");//以json的形式返回给前端resp.getWriter().println(JsonUtil.javaObjectToJson(result));}}}catch(Exceptione){e.printStackTrace();}}/***检查旧密码是否正确,在修改密码操作时使用*@throwsIOException*/publicvoidcheckOldPassword(HttpServletRequestreq,HttpServletResponseresp)throwsIOException{//设置请求编码格式:req.setCharacterEncoding("utf-8");//设置响应编码格式resp.setContentType("text/html;charset=utf-8");Useruser=(User)req.getSession().getAttribute("user");StringoldPassword=service.getPasswordById(user.getId());Stringpassword=req.getParameter("password");try{if(!oldPassword.equals(password)){JSONResulterrorMsg=JSONResult.errorMsg("原始密码错误,请重新输入");resp.getWriter().println(JsonUtil.javaObjectToJson(errorMsg));}else{JSONResultok=JSONResult.ok();resp.getWriter().println(JsonUtil.javaObjectToJson(ok));}}catch(IOExceptione){e.printStackTrace();}}/***修改密码*@throwsIOException*/publicvoidmodifyPassword(HttpServletRequestreq,HttpServletResponseresp)throwsIOException{//设置请求编码格式:req.setCharacterEncoding("utf-8");//设置响应编码格式resp.setContentType("text/html;charset=utf-8");Stringpassword=req.getParameter("newPassword");Useruser=(User)req.getSession().getAttribute("user");intid=user.getId();intd=service.updatePasswordById(id,password);try{if(d>0){JSONResultok=JSONResult.ok();resp.getWriter().println(JsonUtil.javaObjectToJson(ok));}else{JSONResulterrorMsg=JSONResult.errorMsg("修改失败,请重试");resp.getWriter().println(JsonUtil.javaObjectToJson(errorMsg));}}catch(Exceptione){e.printStackTrace();}}/***成功修改密码后,清除session中的数据,并且重新跳转到登录页*@paramreq*@paramresp*/publicvoidafterModifyPassword(HttpServletRequestreq,HttpServletResponseresp){req.getSession().removeAttribute("user");try{//使用iframe时,要避免这种直接跳转的方式//此时只会让内嵌的iframe跳转到登录页,并非整个页面//resp.sendRedirect("backstage/login.jsp");PrintWriterwriter=resp.getWriter();writer.print("<html>");writer.print("<script>");writer.print("window.open('"+req.getContextPath()+"/backstage/login.jsp','_top')");writer.print("</script>");writer.print("</html>");}catch(IOExceptione){e.printStackTrace();}}/***退出登录*/publicvoidlogout(HttpServletRequestreq,HttpServletResponseresp){req.getSession().removeAttribute("user");try{resp.sendRedirect("backstage/login.jsp");}catch(IOExceptione){e.printStackTrace();}}}

关于“Java如何实现玩具商城的前台与后台”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

发布于 2022-01-05 23:33:45
收藏
分享
海报
0 条评论
44
上一篇:怎么用SpringBoot实现QQ邮箱发送邮件 下一篇:Java匿名内部类怎么使用
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码