SpringMVC에서 정적 리소스에 액세스하는 세 가지 방법

Dispatcher Servlet이 차단되면 *.do와 같은 URL은 정적 자원에 접근하지 못하는 문제가 없습니다.Dispatcher Servlet이 "/"를 가로막으면 모든 요청을 가로막고 *.js,*.jpg의 접근도 차단되었다.
목적: 정적 파일을 찾을 수 없으면 정적 파일에 정상적으로 접근할 수 있습니다.
방안 1: 정적 파일을 처리하기 위해 Tomcat의 defaultServlet을 활성화합니다

<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을 먼저 차단하면 스프링에 들어가지 않을 거예요. 성능이 제일 좋은 것 같아요.
  • 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 사용 방법:
    
    <!-- -->
    <mvc:resources mapping="/images/**" location="/images/" />
    /images/**는 ResourceHttpRequestHandler에 매핑되어 처리되며 location은 정적 자원의 위치를 지정합니다.웹 응용 프로그램 루트 디렉터리에 있는jar 패키지에 정적 자원을 압축할 수 있습니다.cache-period는 정적 자원을 웹cache로 만들 수 있습니다
    다음 오류가 발생하면 를 설정하지 않았기 때문일 수 있습니다.
    오류 알림: DispatcherServlet의 URI [/mvc/user/findUser/lisi/770] 및 이름'springMVC'로 HTTP 요청에 대한 매핑이 없습니다.
    요소를 사용하여 맵핑의 URI를 SimpleUrlHandlerMapping의 urlMap에 등록합니다. 키는 맵핑의 URI pattern 값이고value는 ResourceHttpRequestHandler입니다. 이렇게 하면 정적 자원에 대한 접근을 HandlerMapping에서 ResourceHttpRequestHandler로 교묘하게 처리하고 되돌려주기 때문에classpath 디렉터리,jar 패키지 내의 정적 자원에 대한 접근을 지원합니다.
    또 주의해야 할 점은 Simple UrlHandler Mapping에 default Handler를 설정하지 말라는 것이다.static uri에 대한 defaultHandler가 ResourceHttpRequestHandler이기 때문에 그렇지 않으면 static resources request를 처리할 수 없습니다.
    시나리오 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이 없습니다.마지막 Simple UrlHandler Mapping은 "/**"와 일치하기 때문에 반드시 일치하고 그림에 응답합니다.
    그림을 방문하고 겹겹이 일치해야 합니다.성능이 어떤지 정말 모르겠습니다.다음에 스트레스 테스트를 해서 아파치와 비교해 보자.
    이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.

    좋은 웹페이지 즐겨찾기