봄 : 경로와 관련하여 / ** 및 / *의 차이


83

경로를 참조 할 때 하나의 별표 대신 두 개의 별표의 차이점은 무엇입니까?

이전에는 Spring 3 프로젝트를 디버깅하고있었습니다. .swf를 추가하려고했습니다.

<spring:url var="flashy" value="/resources/images/flash.swf"/>

내 web.xml의 ResourceServlet이 다음과 같이 보입니다.

<servlet-name>Resource Servlet </servlet-name>
<url-pattern>/resources/*</url-pattern>

하지만 불행히도이 오류가 발생했습니다.

WARN org.springframework.js.resources.ResourceServlet - An attempt to access a protected resource at /images/flash.swf was disallowed.

images폴더의 모든 이미지 가 액세스 되었기 때문에 정말 이상하다는 것을 알았습니다. 그런데 왜 내 .swf가 "보호"되었습니까?

그 후, 나는을 변경하기로 결정 /resources/*/resources/**하고 마침내했다. 내 질문은 ... 왜?


당신은 확신 /resources/**에 작품을 <url-pattern>?
axtavt 2012 년

참고로 org.springframework.js.resource.ResourceServlet 은 더 이상 사용되지 않습니다. 로부터 스프링 웹 플로우 참조 가이드 "버전 3.0.4로 시작하는 것을 주, Spring 프레임 워크는 ResourceServlet를 대체합니다 (참조 포함 스프링 프레임 워크 문서를 )."
informatik01

답변:


49

이것은 Apache antSpring 팀 에서 사용 된 경로 패턴으로 프레임 워크 전체에서 구현하고 사용합니다.

참고로 AntPathMatcher의 javadoc을 참조하십시오 ( 최신 javadoc에 문제가있는 것 같으 므로 이전 파일을 연결합니다).

문제로 돌아가서 문서에 따르면 3 가지 규칙 만 있습니다.

  1. ? 한 문자와 일치
  2. * 0 개 이상의 문자와 일치
  3. ** 경로에서 0 개 이상의 '디렉토리'와 일치

1
할 수없는 *것과 일치하는 것이 가능 **합니까?
Alexander Suraphel 2014-08-03

3
Springs의 AntPathMatcher에는 버그가 포함되어 있습니다. Ant 패턴 스타일을 완전히 준수하지는 않습니다. 예 :으로 **/*.css시작하는 경로에는 작동하지 않지만 /Ant 스타일 규칙에 따라야합니다.
Devabc
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.