복붙노트

[SPRING] Spring Controller는 다른 컨트롤러와 일치하지 않는 모든 요청을 처리합니다.

SPRING

Spring Controller는 다른 컨트롤러와 일치하지 않는 모든 요청을 처리합니다.

특정 URL과 일치하는 요청 매핑이있는 일련의 컨트롤러가 있습니다. 또한 다른 컨트롤러와 일치하지 않는 다른 URL과 일치하는 컨트롤러를 원합니다. Spring MVC에서 이것을 수행 할 수있는 방법이 있습니까? 예를 들어 @RequestMapping (value = "**")을 가진 컨트롤러를 가지고 Spring 컨트롤러가 처리되는 순서를 변경하여이 컨트롤러가 마지막으로 처리되지 않은 요청을 모두 처리하도록 할 수 있습니까? 아니면이 문제를 해결할 다른 방법이 있습니까?

해결법

  1. ==============================

    1.기본 URL이 = http : // localhost / myapp / myapp가 컨텍스트 인 경우 myapp / a.html, myapp / b.html myapp / c.html이 다음 컨트롤러의 첫 번째 3 메서드에 매핑됩니다. . 그러나 다른 것은 **와 일치하는 마지막 방법에 도달 할 것입니다. ** 매핑 된 메소드를 컨트롤러의 맨 위에 놓으면 모든 요청이이 메소드에 도달한다는 점에 유의하십시오.

    기본 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";
    }
    
  2. ==============================

    2.

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

    이것은 컨트롤러 매칭의 적절한 순서로 작업을 수행합니다. 일치하는 항목이 없을 때 사용됩니다.

  3. from https://stackoverflow.com/questions/36594644/spring-controller-to-handle-all-requests-not-matched-by-other-controllers by cc-by-sa and MIT license