2016-10-05 3 views
1

내가 허용 할 스프링 MVC 3.2 컨트롤러가 추적 URL이의 : http://localhost:8080/mypage http://localhost:8080/mypage/ http://localhost:8080/mypage/foo스프링 MVC에서 URL의 서블릿 매핑을 배제 할 수 없습니다

내가 즉 http://localhost:8080/mypage/bar가해야 아무것도를 제외 할 오류가 발생합니다. 현재 막대는 getStuff 메소드에 매핑됩니다.

필터를 사용하지 않고이 작업을 수행 할 수 있어야한다고 생각합니까?

내 서블릿 매핑은 다음과 같습니다

<servlet-mapping> 
     <servlet-name>MyServlet</servlet-name> 
     <url-pattern>/mypage/*</url-pattern> 
</servlet-mapping> 

컨트롤러 요청 매핑 :

@RequestMapping(method = RequestMethod.GET) 
public String getView(HttpServletRequest request, @ModelAttribute("myform") final MyForm form) { 
     return "myview"; 
} 
@ResponseBody 
@Produces(MediaType.APPLICATION_JSON) 
@Consumes(MediaType.APPLICATION_JSON) 
@POST 
@RequestMapping(value = "/save") 
public String onSave(@RequestBody MyForm form, HttpServletRequest request, HttpServletResponse response) { 
     return "saved"; 
} 

답변

0

Interceptors이라는 Spring MVC 필터를 사용해야합니다.

당신이 쓰는 경우 자신의 Interceptor 당신은 다음과 같이 두 가지 옵션이 있습니다

1. 옵션 :

이 조건을 확인하기 위해 postHandle() 방법을 사용합니다. postHandle() 방법을 사용하는 경우 ModelAndView에 액세스 할 수 있으며 URL이 3 개의 URL 중 하나와 일치하지 않으면 Exception을 던지거나 ModelAndView을 바꿀 수 있습니다.

2. 옵션 : ModelAndViewDefiningException(new ModelAndView("errorPage"))

:

이 같은 new ModelAndView()ModelAndViewDefiningException을의 preHandle() 방법을 사용하는 URL의를 확인하고 일치하지 않는 경우 던져

0

이 서블릿의 <url-pattern> 태그는 제외를 지원하지 않습니다. 이것은 서블릿 스펙의 한계입니다.
이 기능은 프로그래밍 방식으로 filter에 만들어야합니다.

관련 문제