Spring MVC 重定向
来源:原创 发布时间:2015-03-31 归档:springmvc
开发环境 :
JDK 7
Maven 3
Tomcat 7
Spring 4.1.5
Eclipse Luna
spring mvc 中使用 redirect: 前缀可完成重定向的动作。下面介绍如何带参重定向。
示例代码片段 1 ( 带参重定向 )
@Controller @RequestMapping("/user") public class UserController { /** * 登录页面 */ @RequestMapping(value = "/login", method = GET) public String login() { return "login"; } /** * 用户登录, 登录完成重定向到首页 */ @RequestMapping(value = "/login", method = POST) public String login(RedirectAttributes attributes, User user) { attributes.addFlashAttribute("user", user); return "redirect:/user/home"; } /** * 首页 */ @RequestMapping(value = "/home", method = GET) public String home() { return "home"; } }home.jsp
<body> Welcome, ${user.name}! </body>
"redirect:/user/home" 表明重定向到 /user/home, RedirectAttributes.addFlashAttribute(key, value) 可以携带参数到重定向的 url, 并且参数不会显式的出现在重定向的 url 中。实际上, 这样的参数数据是暂存在用户 session 中, 这些参数数据可以作为一个对象被保持着, 直至下一次请求发起时, 这些数据才会被清掉。
user.name == lychie, POST /user/login --> /user/home --> Welcome, lychie!
示例代码片段 2 ( 带参重定向 )
user.name == lychie, POST /user/login --> /user/home --> Welcome, lychie!
@Controller @RequestMapping("/admin") public class AdminController { /** * 登录页面 */ @RequestMapping(value = "/login", method = GET) public String login() { return "login"; } /** * 用户登录, 登录完成重定向到首页 */ @RequestMapping(value = "/login", method = POST) public String login(RedirectAttributes attributes, User user) { attributes.addAttribute("name", user.getName()); return "redirect:/admin/home"; } /** * 首页 */ @RequestMapping(value = "/home", method = GET) public String home(ModelMap model, String name) { try { name = new String(name.getBytes("ISO-8859-1"), "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } model.addAttribute("currUser", name); return "admin_home"; } }admin_home.jsp
<body> Welcome, ${currUser}! </body>
RedirectAttributes.addAttribute(key, value) 可以携带字符串格式参数到重定向的 url, 并且参数会显式的出现在重定向的 url 中。若参数中含有中文, 会出现中文乱码, 可通过转码的方式来解决 ( 如上 )。
user.name == lychie, POST /admin/login --> /admin/home?name=lychie --> Welcome, lychie!
user.name == lychie, POST /admin/login --> /admin/home?name=lychie --> Welcome, lychie!
示例代码下载