java 웹에서 정적 파일의 상용 처리 방법 요약

본고는 자바 웹에서 정적 파일의 상용 처리 방법을 요약한 것으로 자바 웹 프로그램 개발에서 실용적인 가치가 있다. 구체적인 방법은 다음과 같다.
메서드 1: 정적 파일을 처리하기 위해 Tomcat의 defaultServlet 활성화
웹에서xml에 추가:

<servlet-mapping>  
  <servlet-name>default</servlet-name> 
  <url-pattern>*.jpg</url-pattern>   
</servlet-mapping>  
<servlet-mapping>    
  <servlet-name>default</servlet-name>  
  <url-pattern>*.js</url-pattern>  
</servlet-mapping>  
<servlet-mapping>    
  <servlet-name>default</servlet-name>    
  <url-pattern>*.css</url-pattern>   
</servlet-mapping>

설명: Dispatcher Servlet 앞에 써서default Servlet이 먼저 요청을 차단하도록 하세요. 그러면 요청이 Spring에 들어가지 않을 거예요. 성능이 가장 좋은 것 같아요.
Tomcat, Jetty, JBoss, and GlassFish의 기본 서브렛 이름인 "default"
Google App Engine 자체 기본 서브렛의 이름 - "_ah_default"
Resin 자체 기본 서브렛의 이름 - "resin-file"
WebLogic 자체 기본 서브렛 이름 - "FileServlet"
WebSphere 자체 기본 서브렛 이름 - "SimpleFileServlet"
방법2:spring3.0.4 이후 버전에서 mvc:resources를 제공했고 사용 방법:

<!--   -->  
<mvc:resources mapping="/images/**" location="/images/" /> 
설명:/images/**는 ResourceHttpRequestHandler에 매핑되어 처리되며 location은 정적 자원의 위치를 지정합니다.웹 응용 프로그램 루트 디렉터리에 있는jar 패키지에 정적 자원을 압축할 수 있습니다.cache-period는 정적 자원을 웹cache로 만들 수 있습니다
방법3, 사용

<mvc:default-servlet-handler/> 
"/**"url을 SimpleUrlHandlerMapping의 urlMap에 등록하고 정적 자원에 대한 접근을 HandlerMapping에서 org로 이동합니다.springframework.web.servlet.resource.DefaultServletHttpRequestHandler 를 처리하고 반환합니다.
Default ServletHttpRequestHandler 사용은 각 Servlet 용기의 기본 Servlet입니다.
추가 설명: 여러 HandlerMapping의 실행 순서 문제:
DefaultAnnotationHandlerMapping의 order 속성 값은: 0
자동으로 등록된 SimpleUrlHandlerMapping의 order 속성 값은: 2147483646
자동으로 등록된 SimpleUrlHandlerMapping의 order 속성 값은: 2147483647
스프링은order값이 비교적 작은 것을 먼저 실행합니다.a.jpg 그림 파일에 접근할 때 Default Annotation Handler Mapping을 통해 프로세서를 찾으면 찾을 수 없습니다. 왜냐하면 우리는 a.jpg라는 Action이 없기 때문입니다.그리고 order 값 상승 순서에 따라 찾습니다. 마지막 Simple UrlHandler Mapping은 "/**"와 일치하기 때문에 반드시 일치하면 그림에 응답할 수 있습니다.
 
그림을 방문하고 겹겹이 일치해야 합니다.성능이 어떤지 모르겠습니다.
마지막으로 다시 한 번 설명하자면 방안 2, 방안 3은 정적 자원에 접근할 때 일치하는 (근사한) 총 차단기가 있으면 차단기를 걷는다.만약 차단에서 권한 검사를 실현한다면, 정적 파일에 대한 요청을 필터하는 데 주의해야 한다.
Dispatcher Servlet 차단 방법 *.do와 같은 URL 접두사는 상술한 문제를 저장하지 않습니다.접미사가 있는 게 편해요.

좋은 웹페이지 즐겨찾기