Spring mvc重定向传递参数

问题背景:
做电商项目,有些操作需要登录才能进行,一个url被session过滤器拦截后,被链接到登录界面,输入账号、密码等信息后,登录成功,还需回到用户请求的url,并且需要此url携带登录前的参数
1、session过滤器获取参数

//获取用户请求的url
String pathInfo = request.getRequestURI();
//获取URL携带的参数
StringBuffer params=new StringBuffer();
Map<String, String[]> map = request.getParameterMap(); 
Set<Entry<String, String[]>> set = map.entrySet();  
Iterator<Entry<String, String[]>> it = set.iterator();  
while (it.hasNext()) {  
     Entry<String, String[]> entry = it.next();  
     params.append(entry.getKey());
     params.append("=");
     for (String i : entry.getValue()) {  
        params.append(i);
     }
     params.append("&");
 }  
request.getSession().setAttribute("redirectUrl", pathInfo.substring(pathInfo.indexOf(request.getContextPath())+request.getContextPath().length()));
request.getSession().setAttribute("params", params.toString());
response.sendRedirect(request.getContextPath()+"/member/login.html")

2、登录成功后,回到url,并携带参数
方法一:用ModelAndView传递参数

@RequestMapping(value={"login"},method={RequestMethod.POST})
public ModelAndView login(HttpServletRequest request){
//登录操作
.....
//用户请求的url
String redirectUrl=(String) session.getAttribute("redirectUrl");
if(StringUtils.isNotEmpty(redirectUrl)){
//获取url携带的参数
String params=(String)
request.getSession().getAttribute("params");
ModelAndView model=new ModelAndView("redirect:"+redirectUrl);
for(String param:params.split("&")){
     model.addObject(param.split("=")[0],param.split("=")[1]);
}
return model;
}

方法二:用RedirectAttributes传递参数

@RequestMapping(value={"login"},method={RequestMethod.POST})
public String login(HttpServletRequest request,RedirectAttributes attr){
//登录操作
.....
//用户请求的url
String redirectUrl=(String) session.getAttribute("redirectUrl");
//获取url携带的参数
String params=(String) request.getSession().getAttribute("params");
for(String param:params.split("&")){
    attr.addAttribute(param.split("=")[0],param.split("=")[1]);
}
//回到用户请求的url
return "redirect:"+redirectUrl;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨铜锤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值