java - Spring Controller 处理所有其他 Controller 不匹配的请求

标签 java spring model-view-controller controller mapping

我有一系列具有与特定 URL 匹配的请求映射的 Controller 。我还想要一个与其他 Controller 不匹配的任何其他 URL 匹配的 Controller 。 有没有办法在 Spring MVC 中做到这一点?例如,我是否可以拥有一个带有 @RequestMapping(value="**") 的 Controller 并更改 Spring Controller 的处理顺序,以便最后处理该 Controller 以捕获所有不匹配的请求?还是有另一种方法来实现这种行为?

最佳答案

如果您的基本网址是这样的 = http://localhost/myapp/其中 myapp 是您的上下文,然后 myapp/a.html、myapp/b.html myapp/c.html 将映射到以下 Controller 中的前 3 个方法。但是其他任何东西都会到达匹配**的最后一个方法。请注意,如果您将 ** 映射方法放在 Controller 的顶部,那么所有请求都会到达此方法。

然后这个 Controller 满足你的要求:

@Controller
@RequestMapping("/")
public class ImportController{

    @RequestMapping(value = "a.html", method = RequestMethod.GET)
    public ModelAndView getA(HttpServletRequest req) {
        ModelAndView mv;
        mv = new ModelAndView("a");
        return mv;
    }

    @RequestMapping(value = "b.html", method = RequestMethod.GET)
    public ModelAndView getB(HttpServletRequest req) {
        ModelAndView mv;
        mv = new ModelAndView("b");
        return mv;
    }

    @RequestMapping(value = "c.html", method = RequestMethod.GET)
    public ModelAndView getC(HttpServletRequest req) {
        ModelAndView mv;
        mv = new ModelAndView("c");
        return mv;
    }

@RequestMapping(value="**",method = RequestMethod.GET)
public String getAnythingelse(){
return "redirect:/404.html";
}

关于java - Spring Controller 处理所有其他 Controller 不匹配的请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36594644/

相关文章:

java - 将变量传递到 SQL 语句中以选择特定记录

java - JAXB 解码不起作用

java - 无法在 Spring Boot 应用程序中使用 AWS SDK(套接字不是由该工厂创建的)

c# - 模型中 2 个不同属性的相同远程验证

java - Lucene——过滤特定字段的文档

用于处理 http 请求的服务器的 Java Web 服务框架推荐

java - 在 Spring 测试类中设置等效属性后?

ios - 如何在 SplitViewController 上显示 LoginViewController?

java - Spring MVC 验证 : minimum one field required. 至少需要一个字段

Java groupingBy : Get two (or more) groups with single Stream