Spring Controller用于处理与其他控制器不匹配的所有请求

我有一系列控制器与请求映射匹配某些URL。 我还想要一个控制器,它将匹配其他控制器不匹配的任何其他URL。 有没有办法在Spring MVC中执行此操作? 例如,我可以使用带有@RequestMapping(value =“**”)的控制器并更改Spring控制器的处理顺序,以便最后处理此Controller以捕获所有不匹配的请求吗? 或者有另一种方法来实现这种行为吗?

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

然后这个控制器服务你的要求:

@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"; } 
 @RequestMapping (value = "/**", method = {RequestMethod.GET, RequestMethod.POST}) public ResponseEntity defaultPath() { LOGGER.info("Unmapped request handling!"); return new ResponseEntity("Unmapped request", HttpStatus.OK); } 

这将通过适当的控制器匹配顺序完成工作。 当没有匹配时,它将被使用。