SpringMVC Redirect注意啦

      踩雷长路漫漫任我闯。针对近期踩雷、填坑的过程做一下总结,说多了都是泪啊,但是酸爽还是要说出来。
     
       问题一:No mapping found for HTTP request with URI [/a/service;jsessionid=153488x] in DispatcherServlet with name 'dispatcherServlet’ 
            经过部分客户反映页面总是跑到404,让测试妹子复现,迟迟未见效果。
            自己内心开始犯嘀咕,这到底是怎么回事呢。
            于是乎开始抓日志进行分析,发现日志偶尔存在No mapping found for HTTP request with URI,深入分析发现接口url后面直接追加了
            jsessionid=153488x,这样的话,url肯定匹配不到正常的服务,会直接提示404。
       问题分析:
            在Spring MVC当使用RedirectView或者"redirect:"前缀来做重定向时,Spring MVC最后会调用:response.sendRedirect(response.encodeRedirectURL(url));
            对于IE来说,打开一个新的浏览器窗口,第一次访问服务器时,encodeRedirectURL()会在url后面附加上一段jsessionid,如果初始的url为"http://www.sina.com.cn",
            最终得到的url为"http://www.sina.com.cn;jsessionid=15348830CEFC654550C7954CF801BE3"。
           这个jsessionid很多时候会引起严重的问题,例如,如果你使用上述带有jsessionid的url直接访问新浪的网站,IE会向你报告:找不到服务器。
       解决方案:
            Spring MVC -重定向自动添加JSSESSID,在tomcat7环境下,web.xml添加如下配置,观察日志问题得以解决。
            
                   COOKIE
           
 
      问题二:验签的问题
           采用SpringMVC开发项目时,采用return redirect  url跳转到其它占点,在跳转之前调用model的addAttribute添加参数,
           发现跳转的url会自动把model的attribute参数追加到后面,导致下游 系统,验证报文时失败。
     解决方案:
          1.暂时将model的addAttribute放到return  redirect 后面,得以解决;
          2.springMVC的配置文件注解开关中配置"ignoreDefaultModelOnRedirect"变量为true,设置Spring 的 redirect 后不带参数。
             
     
      10月份是多事之秋,多事之秋已经过去。11月已经到来,即将开启新的篇章,希望自己能够多提炼、分享。长路漫漫,任重而道远。

转载于:https://www.cnblogs.com/socoool/p/9931869.html

你可能感兴趣的:(SpringMVC Redirect注意啦)