网站空间双线空间是什么意思,网站建设开发维护,快速排名生客seo,wordpress主题 添加自定义菜单OK#xff0c;首先描述下业务场景#xff0c;终端数量限制登录
1.首先访问项目login的get接口
2.输入账号密码点击登录后#xff0c;会请求login的POST接口
3.后台对终端数量逻辑处理不允许登录跳回到登录页面
4.因代码原因需在后台进行多次重定向接口#xff0c;最后跳…OK首先描述下业务场景终端数量限制登录
1.首先访问项目login的get接口
2.输入账号密码点击登录后会请求login的POST接口
3.后台对终端数量逻辑处理不允许登录跳回到登录页面
4.因代码原因需在后台进行多次重定向接口最后跳转静态jsp页面 在a接口中携带参数重定向到b接口中b接口重定向到登录的jsp页面 但是会发现跳转到jsp页面后a接口携带的参数拼接到了url中实际是因为重定向接口实际也是相当于是发送了一次请求所以才会出现到地址栏中
话不多说直接上原因spring MVC框架controller间跳转需重定向,会将modelAndView中放置的属性值,拼接到重定向url后导致。
解决方案 a接口的接口参数中添加RedirectAttributes并且在return前ra.addFlashAttribute(key,value);这个不影响return ModelAndView 测试发现参数不会再暴露在url中并且在jsp页面中可以获取到参数并且在第一次携带参数后b接口跳转jsp页面前的接口使用ModelAttribute可以成功接收再次刷新页面请求b接口发现参数获取不到已被清除 下面是AI对于RedirectAttributes的解释
RedirectAttributes.addFlashAttribute的值生命周期主要涉及以下几个方面 一、值的存储与传递
当使用RedirectAttributes.addFlashAttribute(参数,值)方法时指定的参数和值会被存储起来以便在重定向后的请求中访问。这个存储过程并不是简单地将参数拼接到重定向的URL上而是利用了session来暂时保存这些数据。 二、值的生命周期 存储阶段在调用addFlashAttribute方法时参数和值被添加到FlashMap中FlashMap随后被存储到session中。 传递阶段当执行重定向时Spring MVC会从session中检索出FlashMap并将其中的参数和值添加到重定向目标请求的模型中。这样在重定向后的请求处理中就可以通过模型访问到这些参数了。 移除阶段一旦参数和值被添加到重定向目标请求的模型中它们就会从session中的FlashMap中移除。这意味着如果用户在重定向后的页面上刷新页面或进行其他操作这些参数将不再可用。 三、注意事项 安全性由于addFlashAttribute方法将参数存储在session中因此相对于将参数直接拼接到URL上使用addAttribute方法来说它更加安全。因为URL上的参数可能会被恶意用户篡改或窃取。 使用场景addFlashAttribute方法适用于需要在重定向后传递敏感信息或需要在页面上显示一次性消息如成功或错误消息的场景。 限制由于参数和值在重定向后被从session中移除因此它们无法在重定向后的控制器方法中直接通过RequestParam注解获取。如果需要在控制器方法中访问这些参数可以考虑使用其他方法如通过模型传递或使用ModelAttribute注解。
综上所述RedirectAttributes.addFlashAttribute的值生命周期包括存储、传递和移除三个阶段。在这个过程中参数和值被安全地存储在session中并在重定向后的请求中传递和移除。