从源码看request.getAttribute()和request.getParameter()之间的区别

本文详细介绍了getAttribute和getParameter两个方法的区别及应用场景。getAttribute方法用于获取和设置属性,支持对象类型;而getParameter方法仅能获取参数,返回值为字符串类型。
getAttribute()和getParameter()ServletRequest接口中声明的方法,实现类是ServletRequestWrapper
而HttpServletRequest接口继承了ServletRequest接口,所以它的request对象能够去访问这两个方法
Attribute:
有get,set方法
Object getAttribute(String var1);
void setAttribute(String var1, Object var2);

Parameter:
只有get方法
String getParameter(String var1);
通过源码我们不难看出getAttribute是返回对象,getParameter返回字符串 

基于javaweb+mysql的jsp+servlet在线水果商城管理系统(java+jsp+servlet+bootstrap+mysql) java毕业 于 2024-02-20 23:07:05 发布 阅读量394 收藏 7 点赞数 10 文章标签: mysql java servlet 版权 基于javaweb+mysql的jsp+servlet在线水果商城管理系统(java+jsp+servlet+bootstrap+mysql) 私信源码获取及调试交流 运行环境 Java≥8、MySQL≥5.7、Tomcat≥8 开发工具 eclipse/idea/myeclipse/sts等均可配置运行 适用 课程设计,大作业,毕业设计,项目练习,学习演示等 功能说明 基于javaweb的JSP+Servlet在线水果商城管理系统(java+jsp+servlet+bootstrap+mysql) 项目介绍 本项目分为前后台,主要分为管理员与用户两种角色,管理员登录后台,普通用户登录前台; 管理员角色包含以下功能: 管理员登录,订单管理,客户管理,水果管理,商品类目管理等功能。 用户角色包含以下功能: 用户登录,修改个人信息,查看首页,查看商品详情,按分类查看商品,查看热门水果,查看新品水果,查看我的订单,查看我的购物车,提交订单等功能。 环境需要 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项目:否; 技术栈 后端:Servlet 2. 前端:JSP+CSS+JavaScript+jQuery+Bootstrap 使用说明 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven; 若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行; 3. 将项目中src/utils/DBUtil.java配置文件中的数据库配置改为自己的配置; 4. 运行项目,输入localhost:8080/jsp_shuiguosaleshop 登录 注:Tomcat中配置路径必须为jsp_shuiguosaleshop,否则会出问题; 用户账号/密码: user/123456 管理员账号/密码:admin/admin } request.setAttribute("status", status); int pageNumber = 1; if(request.getParameter("pageNumber") != null) { try { pageNumber=Integer.parseInt(request.getParameter("pageNumber") ) ; } catch (Exception e) { } } if(pageNumber<=0) pageNumber=1; Page p = oService.getOrderPage(status,pageNumber); if(p.getTotalPage()==0) { p.setTotalPage(1); p.setPageNumber(1); } else { if(pageNumber>=p.getTotalPage()+1) { p = oService.getOrderPage(status,pageNumber); } } request.setAttribute("p", p); request.getRequestDispatcher("/admin/order_list.jsp").forward(request, response); } } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 @WebServlet(name = "admin_goods_edit",urlPatterns = "/admin/goods_edit") public class AdminGoodsEditServlet extends HttpServlet { private GoodsService gService = new GoodsService(); /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { DiskFileItemFactory factory=new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); try { List<FileItem> list = upload.parseRequest(request); Goods g = new Goods(); int pageNumber =1; int type=0; for(FileItem item:list) { if(item.isFormField()) { String fieldName = item.getFieldName(); if("id".equals(fieldName)){ g.setId(Integer.parseInt(item.getString("utf-8"))); }else if("name".equals(fieldName)){ g.setName(item.getString("utf-8")); }else if("price".equals(fieldName)){ g.setPrice(Float.parseFloat(item.getString("utf-8"))); }else if("intro".equals(fieldName)){ g.setIntro(item.getString("utf-8")); }else if("cover".equals(fieldName)){ g.setCover(item.getString("utf-8")); }else if("image1".equals(fieldName)){ g.setImage1(item.getString("utf-8")); }else if("image2".equals(fieldName)){ g.setImage2(item.getString("utf-8")); }else if("stock".equals(fieldName)){ g.setStock(Integer.parseInt(item.getString("utf-8"))); 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 if(method.equals("add")) { gService.addRecommend(id, typeTarget); }else { gService.removeRecommend(id, typeTarget); } request.getRequestDispatcher("/admin/goods_list").forward(request, response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } } @WebServlet(name = "admin_user_delete",urlPatterns = "/admin/user_delete") public class AdminUserDeleteServlet extends HttpServlet { private UserService uService = new UserService(); /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int id = Integer.parseInt(request.getParameter("id")); boolean isSuccess = uService.delete(id); if(isSuccess) { request.setAttribute("msg", "客户删除成功"); }else { request.setAttribute("failMsg", "客户有下的订单,请先删除该客户下的订单,再来删除客户!"); } request.getRequestDispatcher("/admin/user_list").forward(request, response); } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 public void attributeAdded(HttpSessionBindingEvent sbe) { /* This method is called when an attribute is added to a session. */ } public void attributeRemoved(HttpSessionBindingEvent sbe) { /* This method is called when an attribute is removed from a session. */ } public void attributeReplaced(HttpSessionBindingEvent sbe) { /* This method is invoked when an attibute is replaced in a session. */ } } @WebServlet(name = "goods_List",urlPatterns = "/goods_list") public class GoodsListServlet extends HttpServlet { private GoodsService gService=new GoodsService(); private TypeService tService=new TypeService(); protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 Page p = gService.getGoodsRecommendPage(type, pageNumber); if(p.getTotalPage()==0) { p.setTotalPage(1); p.setPageNumber(1); } else { if(pageNumber>=p.getTotalPage()+1) { p = gService.getGoodsRecommendPage(type, pageNumber); } } request.setAttribute("p", p); request.setAttribute("type", type); request.getRequestDispatcher("/admin/goods_list.jsp").forward(request, response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } } @WebServlet(name = "admin_order_list",urlPatterns = "/admin/order_list") public class AdminOrderListServlet extends HttpServlet { private OrderService oService = new OrderService(); /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int status = 0; if(request.getParameter("status") != null) { status=Integer.parseInt(request.getParameter("status") ) ; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 } catch (InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } uService.updateUserAddress(loginUser); request.setAttribute("msg", "收件信息更新成功!"); request.getRequestDispatcher("/user_center.jsp").forward(request, response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } } @WebServlet(name = "admin_goods_recommend",urlPatterns = "/admin/goods_recommend") public class AdminGoodsRecommendServlet extends HttpServlet { private GoodsService gService = new GoodsService(); /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int id = Integer.parseInt(request.getParameter("id")); String method = request.getParameter("method"); int typeTarget=Integer.parseInt(request.getParameter("typeTarget")); if(method.equals("add")) { gService.addRecommend(id, typeTarget); }else { gService.removeRecommend(id, typeTarget); } request.getRequestDispatcher("/admin/goods_list").forward(request, response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int pageNumber = 1; if(request.getParameter("pageNumber") != null) { try { pageNumber=Integer.parseInt(request.getParameter("pageNumber") ) ; } catch (Exception e) { } } if(pageNumber<=0) pageNumber=1; Page p = uService.getUserPage(pageNumber); if(p.getTotalPage()==0) { p.setTotalPage(1); p.setPageNumber(1); } else { if(pageNumber>=p.getTotalPage()+1) { p = uService.getUserPage(pageNumber); } } request.setAttribute("p", p); request.getRequestDispatcher("/admin/user_list.jsp").forward(request, response); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doGet(req, resp); } } @WebServlet(name = "admin_user_add",urlPatterns = "/admin/user_add") public class AdminUserAddServlet extends HttpServlet { private UserService uService = new UserService(); 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 @WebServlet(name = "user_changeaddress",urlPatterns = "/user_changeaddress") public class UserChangeAddressServlet extends HttpServlet { private UserService uService = new UserService(); protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { User loginUser = (User) request.getSession().getAttribute("user"); try { BeanUtils.copyProperties(loginUser, request.getParameterMap()); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } uService.updateUserAddress(loginUser); request.setAttribute("msg", "收件信息更新成功!"); request.getRequestDispatcher("/user_center.jsp").forward(request, response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } } @WebServlet(name = "admin_goods_recommend",urlPatterns = "/admin/goods_recommend") public class AdminGoodsRecommendServlet extends HttpServlet { private GoodsService gService = new GoodsService(); /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 @WebServlet(name = "admin_goods_recommend",urlPatterns = "/admin/goods_recommend") public class AdminGoodsRecommendServlet extends HttpServlet { private GoodsService gService = new GoodsService(); /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int id = Integer.parseInt(request.getParameter("id")); String method = request.getParameter("method"); int typeTarget=Integer.parseInt(request.getParameter("typeTarget")); if(method.equals("add")) { gService.addRecommend(id, typeTarget); }else { gService.removeRecommend(id, typeTarget); } request.getRequestDispatcher("/admin/goods_list").forward(request, response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } } @WebServlet(name = "admin_user_delete",urlPatterns = "/admin/user_delete") public class AdminUserDeleteServlet extends HttpServlet { private UserService uService = new UserService(); /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 // TODO Auto-generated catch block e.printStackTrace(); } catch (InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } if(uService.register(user)) { request.setAttribute("msg", "注册成功,请登录!"); request.getRequestDispatcher("user_login.jsp").forward(request, response); }else { request.setAttribute("msg", "用户名或邮箱重复,请重新填写!"); request.getRequestDispatcher("user_register.jsp").forward(request, response); } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } } @WebServlet(name = "admin_user_list",urlPatterns = "/admin/user_list") public class AdminUserListServlet extends HttpServlet { private UserService uService = new UserService(); /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int pageNumber = 1; if(request.getParameter("pageNumber") != null) { try { pageNumber=Integer.parseInt(request.getParameter("pageNumber") ) ; } catch (Exception e) { } } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 request.getRequestDispatcher("goodsrecommend_list.jsp").forward(request, response); } } @WebServlet(name = "user_changeaddress",urlPatterns = "/user_changeaddress") public class UserChangeAddressServlet extends HttpServlet { private UserService uService = new UserService(); protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { User loginUser = (User) request.getSession().getAttribute("user"); try { BeanUtils.copyProperties(loginUser, request.getParameterMap()); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } uService.updateUserAddress(loginUser); request.setAttribute("msg", "收件信息更新成功!"); request.getRequestDispatcher("/user_center.jsp").forward(request, response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 @WebServlet(name = "goods_List",urlPatterns = "/goods_list") public class GoodsListServlet extends HttpServlet { private GoodsService gService=new GoodsService(); private TypeService tService=new TypeService(); protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int id=0; if(request.getParameter("typeid")!=null) { id=Integer.parseInt(request.getParameter("typeid")); } int pageNumber=1; if(request.getParameter("pageNumber")!=null) { try { pageNumber=Integer.parseInt(request.getParameter("pageNumber")); } catch (Exception e) { } } Type t=null; if(id!=0) { t=tService.selectTypeNameByID(id); } request.setAttribute("t",t); //List<Goods> list=gService.selectGoodsByTypeID(id,1,8); //request.setAttribute("goodsList",list); if(pageNumber<=0) pageNumber=1; Page p=gService.selectPageByTypeID(id,pageNumber); if(p.getTotalPage()==0) { 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 g.setCover("/picture"+fileName); } else if("image1".equals(fieldName)){ g.setImage1("/picture"+fileName); } else if("image2".equals(fieldName)){ g.setImage2("/picture"+fileName); } } } gService.update(g); request.getRequestDispatcher("/admin/goods_list?pageNumber="+pageNumber+"&type="+type).forward(request, response); } catch (FileUploadException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 @WebServlet(name = "goodrecommendList",urlPatterns = "/goodsrecommend_list") public class GoodRecommendListServlet extends HttpServlet { private GoodsService gService = new GoodsService(); protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int type = Integer.parseInt(request.getParameter("type") ) ; int pageNumber = 1; if(request.getParameter("pageNumber") != null) { try { pageNumber=Integer.parseInt(request.getParameter("pageNumber") ) ; } catch (Exception e) { } } if(pageNumber<=0) pageNumber=1; Page p = gService.getGoodsRecommendPage(type, pageNumber); if(p.getTotalPage()==0) { p.setTotalPage(1); p.setPageNumber(1); } else { if(pageNumber>=p.getTotalPage()+1) { p = gService.getGoodsRecommendPage(type, p.getTotalPage()); } } request.setAttribute("p", p); request.setAttribute("t", type); request.getRequestDispatcher("goodsrecommend_list.jsp").forward(request, response); } } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 @WebServlet(name = "order_confirm",urlPatterns = "/order_confirm") public class OrderConfirmServlet extends HttpServlet { private OrderService oService = new OrderService(); protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Order o = (Order) request.getSession().getAttribute("order"); try { BeanUtils.copyProperties(o, request.getParameterMap()); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } o.setDatetime(new Date()); o.setStatus(2); o.setUser((User) request.getSession().getAttribute("user")); oService.addOrder(o); request.getSession().removeAttribute("order"); request.setAttribute("msg", "订单支付成功!"); request.getRequestDispatcher("/order_success.jsp").forward(request, response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } } @WebServlet(name = "user_register",urlPatterns = "/user_rigister") 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 int type = 0;//推荐类型 if(request.getParameter("type") != null) { type=Integer.parseInt(request.getParameter("type") ) ; } int pageNumber = 1; if(request.getParameter("pageNumber") != null) { try { pageNumber=Integer.parseInt(request.getParameter("pageNumber") ) ; } catch (Exception e) { } } if(pageNumber<=0) pageNumber=1; Page p = gService.getGoodsRecommendPage(type, pageNumber); if(p.getTotalPage()==0) { p.setTotalPage(1); p.setPageNumber(1); } else { if(pageNumber>=p.getTotalPage()+1) { p = gService.getGoodsRecommendPage(type, pageNumber); } } request.setAttribute("p", p); request.setAttribute("type", type); request.getRequestDispatcher("/admin/goods_list.jsp").forward(request, response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 @WebServlet(name = "admin_user_list",urlPatterns = "/admin/user_list") public class AdminUserListServlet extends HttpServlet { private UserService uService = new UserService(); /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int pageNumber = 1; if(request.getParameter("pageNumber") != null) { try { pageNumber=Integer.parseInt(request.getParameter("pageNumber") ) ; } catch (Exception e) { } } if(pageNumber<=0) pageNumber=1; Page p = uService.getUserPage(pageNumber); if(p.getTotalPage()==0) { p.setTotalPage(1); p.setPageNumber(1); } else { if(pageNumber>=p.getTotalPage()+1) { p = uService.getUserPage(pageNumber); } } request.setAttribute("p", p); request.getRequestDispatcher("/admin/user_list.jsp").forward(request, response); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doGet(req, resp); 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 if(pageNumber<=0) { pageNumber=1; } Page p =gService.getSearchGoodsPage(keyword,pageNumber); if(p.getTotalPage()==0) { p.setTotalPage(1); p.setPageNumber(1); } else { if(pageNumber>=p.getTotalPage()+1) { p =gService.getSearchGoodsPage(keyword,pageNumber); } } request.setAttribute("p", p); request.setAttribute("keyword", URLEncoder.encode(keyword,"utf-8")); request.getRequestDispatcher("/goods_search.jsp").forward(request, response); } } @WebServlet(name = "order_confirm",urlPatterns = "/order_confirm") public class OrderConfirmServlet extends HttpServlet { 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 ———————————————— 原文链接:https://blog.csdn.net/m0_70122726/article/details/136200578 帮我看一下以上内容,为什么不能使用水果入库的功能
最新发布
06-06
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值