我有一系列具有与特定 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/