一、从多个方面对Controller重定向做详细的阐述
1、Controller重定向跳转
Controller重定向可以跳转到网站内部的其他页面或外部的其他网站。
在Spring MVC中,重定向可以通过RedirectView和RedirectAttributes实现。RedirectView用于指定跳转URL,RedirectAttributes用于传递参数。
@RequestMapping("/redirect") public RedirectView redirect() { RedirectView redirectView = new RedirectView(); redirectView.setUrl("/targetPage"); return redirectView; }
2、Controller与JSP
Controller重定向还可以与JSP搭配使用,实现页面跳转。可以通过返回逻辑视图名实现重定向到相应的JSP页面。
@RequestMapping("/redirectJsp") public String redirectJsp() { return "targetPage"; }
3、Controller重定向端口
Controller重定向还可以指定要跳转的端口。例如,我们要将请求跳转到本机的8080端口。
@RequestMapping("/redirectPort") public RedirectView redirectPort() { RedirectView redirectView = new RedirectView(); redirectView.setUrl("http://localhost:8080/targetPage"); return redirectView; }
4、Controller重定向到别的IP
Controller重定向还可以指定要跳转的IP地址。例如,我们要将请求跳转到192.168.0.1的8080端口,可以使用以下代码:
@RequestMapping("/redirectIp") public RedirectView redirectIp() { RedirectView redirectView = new RedirectView(); redirectView.setUrl("http://192.168.0.1:8080/targetPage"); return redirectView; }
5、Controller重定向到JSP
除了通过返回逻辑视图名实现重定向到相应的JSP页面之外,我们还可以使用forward实现转发。
@RequestMapping("/forwardJsp") public String forwardJsp() { return "forward:/targetPage.jsp"; }
6、Controller重定向到页面
Controller重定向还可以跳转到普通的HTML页面。例如,我们要将请求跳转到本机的index.html页面,可以使用以下代码:
@RequestMapping("/redirectHtml") public RedirectView redirectHtml() { RedirectView redirectView = new RedirectView(); redirectView.setUrl("http://localhost/index.html"); return redirectView; }
7、Controller重定向到站外
Controller重定向还可以跳转到其他网站的页面。例如,我们要将请求跳转到百度首页,可以使用以下代码:
@RequestMapping("/redirectExternal") public RedirectView redirectExternal() { RedirectView redirectView = new RedirectView(); redirectView.setUrl("http://www.baidu.com"); return redirectView; }
8、Controller重定向到HTML
Controller重定向除了跳转到JSP页面之外,还可以跳转到普通的HTML页面。
@RequestMapping("/redirectHtml") public RedirectView redirectHtml() { RedirectView redirectView = new RedirectView(); redirectView.setUrl("/target.html"); return redirectView; }
9、Controller重定向传参
Controller重定向还可以传递参数,可以使用RedirectAttributes实现。例如,我们想重定向到/person页面,并携带一个名为"name",值为"Tom"的参数。
@RequestMapping("/redirectParam") public RedirectView redirectParam(RedirectAttributes attributes) { attributes.addAttribute("name", "Tom"); return new RedirectView("/person"); }
二、代码示例
以下是一个完整的Controller重定向的代码示例:
@Controller public class RedirectController { @RequestMapping("/redirect") public RedirectView redirect() { RedirectView redirectView = new RedirectView(); redirectView.setUrl("/targetPage"); return redirectView; } @RequestMapping("/redirectJsp") public String redirectJsp() { return "targetPage"; } @RequestMapping("/redirectPort") public RedirectView redirectPort() { RedirectView redirectView = new RedirectView(); redirectView.setUrl("http://localhost:8080/targetPage"); return redirectView; } @RequestMapping("/redirectIp") public RedirectView redirectIp() { RedirectView redirectView = new RedirectView(); redirectView.setUrl("http://192.168.0.1:8080/targetPage"); return redirectView; } @RequestMapping("/forwardJsp") public String forwardJsp() { return "forward:/targetPage.jsp"; } @RequestMapping("/redirectHtml") public RedirectView redirectHtml() { RedirectView redirectView = new RedirectView(); redirectView.setUrl("/target.html"); return redirectView; } @RequestMapping("/redirectExternal") public RedirectView redirectExternal() { RedirectView redirectView = new RedirectView(); redirectView.setUrl("http://www.baidu.com"); return redirectView; } @RequestMapping("/redirectParam") public RedirectView redirectParam(RedirectAttributes attributes) { attributes.addAttribute("name", "Tom"); return new RedirectView("/person"); } }