手机网站进不去怎么解决网站手机端生成

当前位置: 首页 > news >正文

手机网站进不去怎么解决,网站手机端生成,软件开发过程包括,兰州seo培训#x1f389;#x1f389;欢迎来到我的CSDN主页#xff01;#x1f389;#x1f389; #x1f3c5;我是Java方文山#xff0c;一个在CSDN分享笔记的博主。#x1f4da;#x1f4da; #x1f31f;推荐给大家我的专栏《电商项目实战》。#x1f3af;#x1f3af; 欢迎来到我的CSDN主页 我是Java方文山一个在CSDN分享笔记的博主。 推荐给大家我的专栏《电商项目实战》。 点击这里就可以查看我的主页啦 Java方文山的个人主页 如果感觉还不错的话请给我点赞吧 期待你的加入一起学习一起进步 一、商品详情 当我们点击商品的时候需要展示对应的商品详情首先在首页商品页写入后端的接口 controller代码 Controller RequestMapping(/goods) public class GoodsController {Autowiredprivate IGoodsService goodsService;RequestMapping(/ByIdSelect)public String ByIdSelect(GoodsVo vo, Model model){Goods g goodsService.getById(vo.getGid());model.addAttribute(g,g);return proDetail;}} 在对应的页面显示相应的数据 !DOCTYPE html htmlhead#include common/head.htmllink relstylesheet typetext/css hrefcss/public.css/link relstylesheet typetext/css hrefcss/proList.css//headbody!——————————head——————————#include common/top.html!—————–address——————————-div classaddressdiv classwrapper clearfixa href\({ctx}/首页/aspan//spana href\){ctx}/page/flowerDer.html装饰摆件/aspan//spana href\({ctx}/page/proList.html干花花艺/aspan//span#--注意1\){goods.goodsTitle!}只能判断goodsTitle属性是否为空不能判断goods对象是否为空2\({(goods.goodsTitle)!}既可以判断goods对象是否为空也可以判断goodsTitle属性是否为空--a href# classon\){(g.goodsTitle)!}/a/div/div!———————–Detail——————————div classdetCondiv classproDet wrapperdiv classproCon clearfixdiv classproImg flimg classdet src\({(g.goodsImg)!} /#--div classsmallImg clearfix]img srcimg/temp/proDet01.jpg data-srcimg/temp/proDet01_big.jpgimg srcimg/temp/proDet02.jpg data-srcimg/temp/proDet02_big.jpgimg srcimg/temp/proDet03.jpg data-srcimg/temp/proDet03_big.jpgimg srcimg/temp/proDet04.jpg data-srcimg/temp/proDet04_big.jpg/div--/divdiv classfr introdiv classtitleh4\){(g.goodsTitle)!}/h4p\({(g.goodsName)!}/pspan\){(g.goodsPrice)!}/span/divdiv classproIntrop颜色分类/pdiv classsmallImg clearfix categp classflimg srcimg/temp/prosmall01.jpg alt白瓷花瓶20支快乐花 data-srcimg/temp/proBig01.jpg/pp classflimg srcimg/temp/prosmall02.jpg alt白瓷花瓶20支兔尾巴草 data-srcimg/temp/proBig02.jpg/pp classflimg srcimg/temp/prosmall03.jpg alt20支快乐花 data-srcimg/temp/proBig03.jpg/pp classflimg srcimg/temp/prosmall04.jpg alt20支兔尾巴草 data-srcimg/temp/proBig04.jpg/p/divp数量nbsp;nbsp;库存span\({(g.goodsStock)!}/span件/pdiv classnum clearfiximg classfl sub srcimg/temp/sub.jpgspan classfl contentEditabletrue1/spanimg classfl add srcimg/temp/add.jpgp classplease fl请选择商品属性!/p/div/divdiv classbtns clearfixa href#2p classbuy fl立即购买/p/aa hrefjavascript:void(0);p classcart fr data-gid\){(g.gid)!}加入购物车/p/a/div/div/div/div/divdiv classintroMsg wrapper clearfixdiv classmsgL fldiv classmsgTit clearfixa classon商品详情/aa所有评价/a/divdiv classmsgAlldiv classmsgImgsimg srcimg/temp/det01.jpgimg srcimg/temp/det02.jpgimg srcimg/temp/det03.jpgimg srcimg/temp/det04.jpgimg srcimg/temp/det05.jpgimg srcimg/temp/det06.jpgimg srcimg/temp/det07.jpg/divdiv classevadiv classper clearfiximg classfl srcimg/temp/per01.jpgdiv classperR flp馨呀/pp不好意思评价晚了产品很好价格比玻璃品便宜没有我担心的杂色发货快包装好全5分/pdiv classclearfixpimg srcimg/temp/eva01.jpg/ppimg srcimg/temp/eva02.jpg/ppimg srcimg/temp/eva03.jpg/ppimg srcimg/temp/eva04.jpg/ppimg srcimg/temp/eva05.jpg/p/divpspan2016年12月27日08:31/spanspan颜色分类大中小三件套不含花/span/p/div/divdiv classper clearfiximg classfl srcimg/temp/per02.jpgdiv classperR flp么周/pp花瓶超级棒我看图以为是光面的收货发现是磨砂但感觉也超有质感很喜欢。磨砂上面还有点纹路不过觉得挺自然的不影响美观。包装也很好绝对不会磕碎碰坏好评/ppspan2016年12月27日08:31/spanspan颜色分类大中小三件套不含花/span/p/div/divdiv classper clearfiximg classfl srcimg/temp/per01.jpgdiv classperR flp馨呀/pp不好意思评价晚了产品很好价格比玻璃品便宜没有我担心的杂色发货快包装好全5分/pdiv classclearfixpimg srcimg/temp/eva01.jpg/ppimg srcimg/temp/eva02.jpg/ppimg srcimg/temp/eva03.jpg/ppimg srcimg/temp/eva04.jpg/ppimg srcimg/temp/eva05.jpg/p/divpspan2016年12月27日08:31/spanspan颜色分类大中小三件套不含花/span/p/div/divdiv classper clearfiximg classfl srcimg/temp/per02.jpgdiv classperR flp么周/pp花瓶超级棒我看图以为是光面的收货发现是磨砂但感觉也超有质感很喜欢。磨砂上面还有点纹路不过觉得挺自然的不影响美观。包装也很好绝对不会磕碎碰坏好评/ppspan2016年12月27日08:31/spanspan颜色分类大中小三件套不含花/span/p/div/divdiv classper clearfiximg classfl srcimg/temp/per01.jpgdiv classperR flp馨呀/pp不好意思评价晚了产品很好价格比玻璃品便宜没有我担心的杂色发货快包装好全5分/pdiv classclearfixpimg srcimg/temp/eva01.jpg/ppimg srcimg/temp/eva02.jpg/ppimg srcimg/temp/eva03.jpg/ppimg srcimg/temp/eva04.jpg/ppimg srcimg/temp/eva05.jpg/p/divpspan2016年12月27日08:31/spanspan颜色分类大中小三件套不含花/span/p/div/divdiv classper clearfiximg classfl srcimg/temp/per02.jpgdiv classperR flp么周/pp花瓶超级棒我看图以为是光面的收货发现是磨砂但感觉也超有质感很喜欢。磨砂上面还有点纹路不过觉得挺自然的不影响美观。包装也很好绝对不会磕碎碰坏好评/ppspan2016年12月27日08:31/spanspan颜色分类大中小三件套不含花/span/p/div/divdiv classper clearfiximg classfl srcimg/temp/per01.jpgdiv classperR flp馨呀/pp不好意思评价晚了产品很好价格比玻璃品便宜没有我担心的杂色发货快包装好全5分/pdiv classclearfixpimg srcimg/temp/eva01.jpg/ppimg srcimg/temp/eva02.jpg/ppimg srcimg/temp/eva03.jpg/ppimg srcimg/temp/eva04.jpg/ppimg srcimg/temp/eva05.jpg/p/divpspan2016年12月27日08:31/spanspan颜色分类大中小三件套不含花/span/p/div/divdiv classper clearfiximg classfl srcimg/temp/per02.jpgdiv classperR flp么周/pp花瓶超级棒我看图以为是光面的收货发现是磨砂但感觉也超有质感很喜欢。磨砂上面还有点纹路不过觉得挺自然的不影响美观。包装也很好绝对不会磕碎碰坏好评/ppspan2016年12月27日08:31/spanspan颜色分类大中小三件套不含花/span/p/div/divdiv classper clearfiximg classfl srcimg/temp/per01.jpgdiv classperR flp馨呀/pp不好意思评价晚了产品很好价格比玻璃品便宜没有我担心的杂色发货快包装好全5分/pdiv classclearfixpimg srcimg/temp/eva01.jpg/ppimg srcimg/temp/eva02.jpg/ppimg srcimg/temp/eva03.jpg/ppimg srcimg/temp/eva04.jpg/ppimg srcimg/temp/eva05.jpg/p/divpspan2016年12月27日08:31/spanspan颜色分类大中小三件套不含花/span/p/div/divdiv classper clearfiximg classfl srcimg/temp/per02.jpgdiv classperR flp么周/pp花瓶超级棒我看图以为是光面的收货发现是磨砂但感觉也超有质感很喜欢。磨砂上面还有点纹路不过觉得挺自然的不影响美观。包装也很好绝对不会磕碎碰坏好评/ppspan2016年12月27日08:31/spanspan颜色分类大中小三件套不含花/span/p/div/div/div/div/divdiv classmsgR frh4为你推荐/h4div classseeLista href#dldtimg srcimg/temp/see01.jpg/dtdd【最家】复古文艺风玻璃花瓶/dddd193.20/dd/dl/aa href#dldtimg srcimg/temp/see02.jpg/dtdd【最家】复古文艺风玻璃花瓶/dddd193.20/dd/dl/aa href#dldtimg srcimg/temp/see03.jpg/dtdd【最家】复古文艺风玻璃花瓶/dddd193.20/dd/dl/aa href#dldtimg srcimg/temp/see04.jpg/dtdd【最家】复古文艺风玻璃花瓶/dddd193.20/dd/dl/a/div/div/divdiv classlikeh4猜你喜欢/h4div classbottomdiv classhdspan classprevimg srcimg/temp/prev.png/spanspan classnextimg srcimg/temp/next.png/span/divdiv classimgCon bddiv classlikeList clearfixdiva href\({ctx}/page/proDetail.htmldldtimg srcimg/temp/like01.jpg/dtdd【最家】复古文艺风玻璃花瓶/dddd193.20/dd/dl/aa href\){ctx}/page/proDetail.htmldldtimg srcimg/temp/like02.jpg/dtdd【最家】复古文艺风玻璃花瓶/dddd193.20/dd/dl/aa href\({ctx}/page/proDetail.htmldldtimg srcimg/temp/like03.jpg/dtdd【最家】复古文艺风玻璃花瓶/dddd193.20/dd/dl/aa href\){ctx}/page/proDetail.htmldldtimg srcimg/temp/like04.jpg/dtdd【最家】复古文艺风玻璃花瓶/dddd193.20/dd/dl/aa href\({ctx}/page/proDetail.html classlastdldtimg srcimg/temp/like05.jpg/dtdd【最家】复古文艺风玻璃花瓶/dddd193.20/dd/dl/a/divdiva href\){ctx}/page/proDetail.htmldldtimg srcimg/temp/like01.jpg/dtdd【最家】复古文艺风玻璃花瓶/dddd193.20/dd/dl/aa href\({ctx}/page/proDetail.htmldldtimg srcimg/temp/like02.jpg/dtdd【最家】复古文艺风玻璃花瓶/dddd193.20/dd/dl/aa href\){ctx}/page/proDetail.htmldldtimg srcimg/temp/like03.jpg/dtdd【最家】复古文艺风玻璃花瓶/dddd193.20/dd/dl/aa href\({ctx}/page/proDetail.htmldldtimg srcimg/temp/like04.jpg/dtdd【最家】复古文艺风玻璃花瓶/dddd193.20/dd/dl/aa href\){ctx}/page/proDetail.html classlastdldtimg srcimg/temp/like05.jpg/dtdd【最家】复古文艺风玻璃花瓶/dddd193.20/dd/dl/a/div/div/div/div/div!–返回顶部–#include common/footer.htmlscript srcjs/jquery.SuperSlide.2.1.1.js typetext/javascript charsetutf-8/scriptscript srcjs/public.js typetext/javascript charsetutf-8/scriptscript srcjs/nav.js typetext/javascript charsetutf-8/scriptscript srcjs/pro.js typetext/javascript charsetutf-8/scriptscript srcjs/cart.js typetext/javascript charsetutf-8/scriptscript typetext/javascriptjQuery(.bottom).slide({titCell:.hd ul,mainCell:.bd .likeList,autoPage:true,autoPlay:false,effect:leftLoop,autoPlay:true,vis:1});/script/body /html效果展示  二、加入购物车 1.前端方法编写 商品详情页面引入了一个cart.js,里面是有关该所有的点击事件方法 \((function(){/**************数量加减***************/\)(.num .sub).click(function(){var num parseInt(\((this).siblings(span).text());if(num1){\)(this).attr(disabled,disabled);}else{num–;\((this).siblings(span).text(num);//获取除了货币符号以外的数字var price \)(this).parents(.number).prev().text().substring(1);//单价和数量相乘并保留两位小数\((this).parents(.th).find(.sAll).text((num*price).toFixed(2));jisuan();zg();}});\)(.num .add).click(function(){var num parseInt(\((this).siblings(span).text());if(num5){confirm(限购5件);}else{num;\)(this).siblings(span).text(num);var price \((this).parents(.number).prev().text().substring(1);\)(this).parents(.th).find(.sAll).text((num*price).toFixed(2));jisuan();zg();}});//计算总价function jisuan(){var all0;var len \((.th input[typecheckbox]:checked).length;if(len0){\)(#all).text(parseFloat(0).toFixed(2));}else{\((.th input[typecheckbox]:checked).each(function(){//获取小计里的数值var sAll \)(this).parents(.pro).siblings(.sAll).text().substring(1);//累加allparseFloat(sAll);//赋值\((#all).text(all.toFixed(2));})}}//计算总共几件商品function zg(){var zsl 0;var index \)(.th input[typecheckbox]:checked).parents(.th).find(.num span);var len index.length;if(len0){\((#sl).text(0);}else{index.each(function(){zslparseInt(\)(this).text());\((#sl).text(zsl);})}if(\)(#sl).text()0){\((.count).css(background,#c10000);}else{\)(.count).css(background,#8e8e8e);}}/**************商品全选*****************/\((input[typecheckbox]).on(click,function(){var sf \)(this).is(:checked);var sc \((this).hasClass(checkAll);if(sf){if(sc){\)(input[typecheckbox]).each(function(){ this.checkedtrue; }); zg();jisuan();}else{\((this).checkedtrue; var len \)(input[typecheckbox]:checked).length;var len1 \((input).length-1;if(lenlen1){\)(input[typecheckbox]).each(function(){ this.checkedtrue; }); }zg();jisuan();}}else{if(sc){\((input[typecheckbox]).each(function(){ this.checkedfalse; }); zg();jisuan();}else{\)(this).checkedfalse;var len \((.th input[typecheckbox]:checked).length;var len1 \)(input).length-1;if(lenlen1){$(.checkAll).attr(checked,false);}zg();jisuan();}}});/**********************proDetail 加入购物车****************************/\((.btns .cart).click(function(){//获取购物车上的商品IDlet gidthis.dataset.gid;//获取商品数量let num\)(div span.fl).text;//发起请求\(.post(/cart/add,{gid},resp{},json)});//删除购物车商品\)(.del).click(function(){//单个删除if(\((this).parent().parent().hasClass(th)){\)(.mask).show();\((.tipDel).show();index \)(this).parents(.th).index()-1;\((.cer).click(function(){\)(.mask).hide();\((.tipDel).hide();\)(.th).eq(index).remove();\((.cer).off(click);if(\)(.th).length0){\((.table .goOn).show();}})}else{//选中多个一起删除if(\)(.th input[typecheckbox]:checked).length0){\((.mask).show();\)(.pleaseC).show();}else{\((.mask).show();\)(.tipDel).show();\((.cer).click(function(){\)(.th input[typecheckbox]:checked).each(function(j){index \((this).parents(.th).index()-1;\)(.th).eq(index).remove();if(\((.th).length0){\)(.table .goOn).show();}})\((.mask).hide();\)(.tipDel).hide();zg();jisuan();})}}})\((.cancel).click(function(){\)(.mask).hide();\((.tipDel).hide();})//改变商品规格 // \)(.pro dd).hover(function(){ // var html; // htmlspan classedit修改/span; // \((this).addClass(on).append(html).parents(.th).siblings(.th).find(.pro dd).removeClass(on).find(.edit).remove(); // \)(.edit).each(function(i){ // \((this).attr(id,editi); // \)(#editi).click(function(){ // \((.proDets).show(); // \)(.mask).show(); // \((.changeBtn .buy).attr(data-id,i); // }) // }) // },function(){ // \)(this).removeClass(on); // }) // \((.changeBtn .buy).click(function(){ // var index \)(this).attr(data-id); // var result \((.smallImg .on).find(img).attr(alt); // \)(#editindex).prev().text(result); // \((.proDets).hide(); // \)(.mask).hide(); // \((#editindex).parent(dd).removeClass(on).find(.edit).remove(); // }); // \)(.changeBtn .cart).click(function(){ // \((.proDets).hide(); // \)(.mask).hide(); // }) })2.后端代码编写  我们的用户购物车数据放在数据库太耗费数据库的资源了我们可以将数据放入redis进行一个时限判断如果一周内没有进行数据访问就加入数据库并清除缓存。 我们需要编写新增和查询Redis中购物车数据方法 IRedisService // 保存用户购物车信息void saveCart(User user, GoodsVo vo);// 查询用户购物车信息ListGoodsVo loadCart(User user);IRedisService实现类 Overridepublic ListGoodsVo loadCart(User user) {HashOperationsString,String,GoodsVo operationsredisTemplate.opsForHash();String bigKeyConstants.REDIS_CART_PREFIX user.getId();//根据用户Id查询所有的购物车信息ListGoodsVo values operations.values(bigKey);return values;} controller  RequestMapping(/getCart)public String getCart(GoodsVo vo, HttpServletRequest request, Model model) {//根据键获取tokenString token CookieUtils.getCookieValue(request, userToken);//根据token获取用户User user redisService.loadUser(token);//获取用户购物车商品信息ListGoodsVo goodsVos redisService.loadCart(user);//根据商品Id查询对应商品ListInteger ids goodsVos.stream().map(GoodsVo::getGid).collect(Collectors.toList());ListGoods goods goodsService.listByIds(ids); // 进行遍历筛选合适的数据for (Goods g : goods) {//找到对应属性的商品GoodsVo gv goodsVos.stream().filter(v - Objects.equals(v.getGid(), g.getGid())).findFirst().orElse(null);if (gv ! null) {//将该商品g的属性赋值给GoodsVosBeanUtils.copyProperties(g, gv);}}System.out.println(goodsVos);model.addAttribute(item, goodsVos);return cart;} 因为我们redis中只有商品的id所以需要将所有商品的id拿到数据库中查询将该商品的图片信息标题等查询出来利用BeanUtils将属性加入到goodsVos中方便前端页面显示 三、优化细节部分 1.购物车显示数据 !DOCTYPE html html head langen#include common/head.htmllink relstylesheet typetext/css hrefcss/public.css/link relstylesheet typetext/css hrefcss/proList.css / /head body !————————————–cart——————— div classhead dingdiv classwrapper clearfixdiv classclearfix idtoph1 classfla href\({ctx}/img srcimg/logo.png//a/h1div classfr clearfix idtop1form action# methodget classflinput typetext placeholder搜索 /input typebutton //form/div/div/div /div div classcart mt!-----------------logo-------------------!--div classlogoh1 classwrapper clearfixa href\){ctx}/img classfl srcimg/temp/logo.png/aimg classtop srcimg/temp/cartTop01.png/h1/div–!—————–site——————-div classsitep class wrapper clearfixspan classfl购物车/spanimg classtop srcimg/temp/cartTop01.pnga href\({ctx}/ classfr继续购物gt;/a/p/div!-----------------table-------------------div classtable wrapperdiv classtrdiv商品/divdiv单价/divdiv数量/divdiv小计/divdiv操作/div/div#--有数据就显示--#if item??#list item as gdiv classthdiv classpro clearfixlabel classflinput typecheckbox/span/span/labela classfl href#dl classclearfixdt classflimg src\){(g.goodsImg)!}/dtdd classflp\({(g.goodsName)!}/pp颜色分类:/pp\){(g.goodsType)!}/p/dd/dl/a/divdiv classprice\({(g.goodsPrice)!}/divdiv classnumberp classnum clearfiximg classfl sub srcimg/temp/sub.jpgspan classfl\){(g.num)!}/spanimg classfl add srcimg/temp/add.jpg/p/divdiv classprice sAll20.00/divdiv classpricea classdel href#2删除/a/div/div/#list#elsediv classgoOn空空如也~a href${ctx}/去逛逛/a/div/#ifdiv classtr clearfixlabel classflinput classcheckAll typecheckbox/span/span/labelp classfla hrefjavascript:void(0);全选/aa hrefjavascript:void(0); classdel删除/a/pp classfrspan共small idsl0/small件商品/spanspan合计:nbsp;small idall0.00/small/spana classcount结算/a/p/div/div /div div classmask/div div classtipDelp确定要删除该商品吗/pp classclearfixa classfl cer hrefjavascript:void(0);确定/aa classfr cancel hrefjavascript:void(0);取消/a/p /div !–返回顶部– #include common/footer.html !—————-mask——————- div classmask/div !——————-mask内容——————- div classproDetsimg classoff srcimg/temp/off.jpg /div classproCon clearfixdiv classproImg frimg classlist srcimg/temp/proDet.jpg /div classsmallImg clearfiximg srcimg/temp/proDet01.jpg data-srcimg/temp/proDet01_big.jpgimg srcimg/temp/proDet02.jpg data-srcimg/temp/proDet02_big.jpgimg srcimg/temp/proDet03.jpg data-srcimg/temp/proDet03_big.jpgimg srcimg/temp/proDet04.jpg data-srcimg/temp/proDet04_big.jpg/div/divdiv classfldiv classproIntro changep颜色分类/pdiv classsmallImg clearfixp classfl onimg srcimg/temp/prosmall01.jpg alt白瓷花瓶20支快乐花 data-srcimg/temp/proBig01.jpg/pp classflimg srcimg/temp/prosmall02.jpg alt白瓷花瓶20支兔尾巴草 data-srcimg/temp/proBig02.jpg/pp classflimg srcimg/temp/prosmall03.jpg alt20支快乐花 data-srcimg/temp/proBig03.jpg/pp classflimg srcimg/temp/prosmall04.jpg alt20支兔尾巴草 data-srcimg/temp/proBig04.jpg/p/div/divdiv classchangeBtn clearfixa href#2 classflp classbuy确认/p/aa href#2 classfrp classcart取消/p/a/div/div/div /div div classpleaseCp请选择宝贝/pimg classoff srcimg/temp/off.jpg / /div script srcjs/public.js typetext/javascript charsetutf-8/script script srcjs/pro.js typetext/javascript charsetutf-8/script script srcjs/cart.js typetext/javascript charsetutf-8/script /body /html这里直接将我们后端所拿到的数据进行判断遍历展示即可 2.退出登录 首先我们不止需要清除浏览器上的cookie还需要清除redis中保存的用户信息所以在Redis的service层定义一个删除的方法 // 清除用户数据void logout(String token); 实现类编写相应代码 Overridepublic void logout(String token) {//根据token删除对应的键redisTemplate.delete(Constants.REDIS_USER_PREFIX token);} 这时候我们就可以编写退出的controller代码了 RequestMapping(/logout)public String login( HttpServletRequest request, HttpServletResponse response){//清除redis缓存String token CookieUtils.getCookieValue(request, userToken);redisService.logout(token);//清除cookieCookieUtils.deleteCookie(request,response,userToken);CookieUtils.deleteCookie(request,response,nickname);return redirect:/;} 清除浏览器cookie的同时也清除redis中的数据避免资源浪费 3.参数解析器  通过这几天的编写不知道大家发现没有我们很多方法中都有获取用户的token信息可以说这段代码是重复的我们可以将其优化掉 UserArgumentResolver  Component public class UserArgumentResolver implements HandlerMethodArgumentResolver {Autowiredprivate IRedisService redisService;Overridepublic boolean supportsParameter(MethodParameter parameter) {return parameter.getGenericParameterType() User.class;}Overridepublic Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {HttpServletRequest request (HttpServletRequest) webRequest.getNativeRequest();//从请求中获取cookieString token CookieUtils.getCookieValue(request, userToken);User user redisService.loadUser(token);return user;} } 这个解析器的作用是判断控制器方法的参数是否为User类型如果是则会在处理请求之前执行resolveArgument方法。在resolveArgument方法中它会通过HttpServletRequest获取请求中的cookie然后调用redisService的loadUser方法根据cookie中的token加载对应的用户信息。最后返回解析得到的User对象作为控制器方法的参数。 这里还需要一个config配置类用于加载自定义解析器 WebConfig Component public class WebConfig implements WebMvcConfigurer {Autowiredprivate UserArgumentResolver userArgumentResolver;Overridepublic void addArgumentResolvers(ListHandlerMethodArgumentResolver resolvers) {resolvers.add(userArgumentResolver);}} ​ 到这里我的分享就结束了欢迎到评论区探讨交流 如果觉得有用的话还请点个赞吧