一、springMVC使用forward或redirect进行跳转时发生自动拼接参数到url后面的解决方案
1、问题描述
当使用类似如下forword进行页面跳转时,
@RequestMapping("/user/userinfo.do")
public String updateCustomer(Customer customer) {
cservice.updateCustomer(customer);
return "../login.jsp";
}
跳转后的url显示如下:
参数会自动拼接到url后面,有时候为了安全,是有必要将参数数据进行隐藏起来。
2、隐藏方法
1)解决forword跳转时参数自动拼接到url后面
> 换成redirect重定向,视图名前加个redirect:前缀
@RequestMapping("/user/userinfo.do")
public String updateCustomer(Customer customer) {
cservice.updateCustomer(customer);
return "redirect:../login.jsp";
}
> 返回一个RedirectView对象
@RequestMapping("/user/userinfo.do")
public RedirectView updateCustomer(Customer customer) {
cservice.updateCustomer(customer);
RedirectView view = new RedirectView("../login.jsp");
return view;
}
本质也是redirect,url发生了改变
2)解决redirect跳转时参数自动拼接到url后面
> 参数里加一个RedirectAttributes对象
RedirectAttributes对象可以用来自由控制url后面可以拼接什么参数
@RequestMapping("/user/userinfo.do")
public String updateCustomer(Customer customer,RedirectAttributes ra) {
cservice.updateCustomer(customer);
// RedirectView view = new RedirectView("../login.jsp");
ra.addAttribute("test", "wo shi test");
return "redirect:../login.jsp";
}
效果如下: