인터셉터는 종종 스프링 MVC에서 사용됩니다. 가로 채기가 필요한 경로를 구성 할 때 <MVC : 매핑/> 서브 레이블이 종종 사용됩니다. 경로 속성이 있으며 가로 채워야하는 경로를 지정하는 데 사용됩니다. 예를 들어:
<mvc : interceptor> <mvc : 매핑 경로 = "/**"/> <bean/> </mvc : interceptor> </mvc : interceptor>
위의 구성에 따르면이 인터셉터는 모든 요청을 가로 채 웁니다.
스프링 MVC에서 일치하는 경로는 표준 web.xml보다 훨씬 유연합니다. 기본 정책은 org.springframework.util.antpathmatcher를 구현합니다. 이름에서 알 수 있듯이 경로 패턴은 Apache Ant 스타일 경로를 사용합니다. Apache Ant 스타일 경로에 대한 세 가지 와일드 카드 매칭 방법이 있습니다 (아래 표에 나열). 이들은 많은 유연한 경로 패턴을 결합 할 수 있습니다.
테이블 개미 와일드 카드 문자
와일드 카드 | 설명 |
| ? | 단일 캐릭터와 일치하십시오 |
| * | 0 또는 여러 문자를 일치시킵니다 |
| ** | 0 개 이상의 디렉토리와 일치합니다 |
표 예제 개미 스타일 경로 패턴
| 길 | 설명 |
| /app/*.x | 앱 경로에서 모든 .x 파일과 일치합니다 |
| /app/p? ttern | 매치 /앱 /패턴 및 /앱 /pxttern이지만 /app /pttern은 아닙니다 |
| /**/예 | 매치 /앱 /예제, /앱 /foo /예제 및 /예제 |
| /app/**/dir/파일. | matches /app/dir/file.jsp, /app/foo/dir/file.html, /app/foo/bar/dir/file.pdf 및 /app/dir/file.java |
| /**/* .jsp | 모든 .jsp 파일과 일치합니다 |
핸들 핑
웹 응용 프로그램은 기본적으로 URL과 요청 프로세서 간의 매핑에 따라 다르며 Spring MVC에 대해서도 마찬가지입니다. 그러나 Spring MVC는 Spring이하는 모든 일과 같습니다 (번역기 : Flexible, 모든 종류의 물건을 구성 할 수 있지만 많은 복잡성을 생성합니다). URL과 컨트롤러 간의 관계를 매핑하는 한 가지 방법이있을뿐만 아니라 실제로 URL 매핑에 의존하기보다는 매핑 규칙과 구현 직접 생성 할 수 있습니다.
Spring은 URL 매핑 처리를 제공하며 경로 패턴을 처리하는 순서 및 방법은 인터페이스에만 국한되지 않습니다. Spring MVC의 기본 구현 org.springframework.web.servlet.handler. AbstractUrlHandlerMpapping은 가장 긴 경로 패턴의 경로와 일치합니다.
예를 들어 : 요청은/app/dir/file.jsp이고 이제 두 개의 경로 일치 패턴 /**/* jsp 및 /app/dir/*.jsp가 있는데, 그렇다면 URL이 어떤 패턴 일치합니까? 마지막 패턴 /app/dir/* .jsp는 /**/* .jsp보다 더 많은 문자를 가진 가장 긴 캐릭터의 원리와 일치합니다. 이 원칙은 높은 수준의 인터페이스에 지정되지는 않지만 구현 세부 사항입니다.
beannameurlhandlermpapping
기본 매핑 전략 구현은 org.springframework.web.servlet.handler.beannameurlhandlermpapping 클래스입니다. 이 클래스는 요청을 처리 할 수있는 모든 Bean이 BackSlash (/) 문자로 시작하는 이름 또는 별칭이 있어야합니다. 이 이름 또는 별칭은 URL 경로 일치 원리를 준수하는 이름 일 수 있습니다.
콩 이름으로 매핑 된 컨트롤러 나열
XML 코드
<bean name = "/home"> <property name = "flightservice"ref = "flightservice"/> </bean>
■ 참고 : XML 사양에서 (/) 문자가 금지되어 XML의 ID를 지정하기 때문에 ID 속성을 사용하여 URL 경로를 지정할 수는 없지만 Bean 정의에 ID와 이름 속성을 모두 가질 수 있습니다.
사용하기가 매우 쉽고 몇 가지 단점이 있습니다. 프로토 타입 콩을 암시 할 수 없습니다. 다시 말해, BeanNameurlHandlerMpapping을 사용할 때 모든 요청 처리 클래스는 싱글 톤 일 수 있습니다. 일반적으로 컨트롤러는 싱글 톤에 따라 설정되므로 이는 심각한 문제가 아닙니다. 또한 다음 장에서 컨트롤러를 소개 할 것이며 프로토 타입이어야하는 컨트롤러 유형은 거의 없습니다.
■ 참고 : 프로토 타입 콩은 비 싱턴 콩입니다. GetBean () ApplicationContext의 메소드가 호출 될 때마다 새 Bean 인스턴스가 반환됩니다.
BeannameurlHandlerMpapping의 또 다른 문제는 응용 프로그램에 인터셉터가 적용된다는 것입니다. 요청 된 맵과 Beans imping 맵이 함께 묶여 있고 분리되지 않기 때문에 컨트롤러와 인터셉터 사이에 복잡한 관계를 만드는 것은 불가능합니다. 복잡한 요청 매핑 요구 사항이있는 경우 BeanNameurlHandlerMpapping 대신 SimpleUrlHandlerMapping을 사용할 수 있습니다. SimpleUrlHandlerMpapping은 BeanNameurlHandlerMpapping의 또 다른 옵션입니다. SimpleurlHandlerMpapping은 BeannameurlHandlerMpapping의 두 가지 주요 약점을 직접 가리 킵니다. 프로토 타입 유형 요청 프로세서를 매핑 할 수 있으며 핸들러와 인터셉터 사이에 복잡하고 유연한 매핑 경로를 만들 수 있습니다. 매핑 알고리즘은 BeanNameUrlHandlerMpapping과 동일한 기본 구성 요소를 사용 하므로이 패턴은 여전히 URL을 맵핑하여 핸들러 (요청 처리기)를 application 텍스트에서 선언하고 SimpleUrlHandlerMpapping을 사용할 수 있습니다. Dispatcherservlet은 유형에 따라 발견되며 기본 맵퍼 (BeannameurlHandlerMpapping)를 생성하지 않습니다. 즉, 두 가지를 모두 사용하려면 ApplicationContext에서 모든 것을 선언해야합니다.
■ Prompt DispatcherServlet은 체인의 요청을 처리합니다 (번역기 : 프로세스 요청 순서대로 필터 및 GOF에서 책임 체인 모드를 참조 할 수 있습니다. 이는 요구 사항에 따라 매핑을 처리 할 수 있습니다. 매핑 프로세서 (핸들러 매핑)는 OrderEDR 인터페이스를 구현합니다.
위의 것은 스프링 MVC 경로 일치 원리에 대한 자세한 설명에 대한이 기사의 모든 내용입니다. 모든 사람에게 도움이되기를 바랍니다. 관심있는 친구는이 사이트의 다른 관련 주제를 계속 참조 할 수 있습니다. 단점이 있으면 메시지를 남겨 두십시오. 이 사이트를 지원해 주신 친구들에게 감사드립니다!