您的位置:

Controller重定向

一、从多个方面对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");
    }
}