SpringMVC 차단기가 정적 리소스를 차단하지 않는 세 가지 방법

SpringMVC는 를 제공하여 정적 자원을 설정하지만, 이 설정을 추가하면 어댑터로 차단기를 추가하면 차단기에 의해 차단됩니다. 다음과 같은 방안으로 해결할 수 있습니다.
방안 1. 차단기에 정적 자원에 대한 필터링을 하지 않는 것을 추가합니다 (spring-mvc.xml 관련)

<mvc:resources location="/" mapping="/**/*.js"/> 
<mvc:resources location="/" mapping="/**/*.css"/> 
<mvc:resources location="/assets/" mapping="/assets/**/*"/> 
<mvc:resources location="/images/" mapping="/images/*" cache-period="360000"/>

<mvc:interceptors>
  <mvc:interceptor>
    <mvc:mapping path="/**/*"/>
    <mvc:exclude-mapping path="/**/fonts/*"/>
    <mvc:exclude-mapping path="/**/*.css"/>
    <mvc:exclude-mapping path="/**/*.js"/>
    <mvc:exclude-mapping path="/**/*.png"/>
    <mvc:exclude-mapping path="/**/*.gif"/>
    <mvc:exclude-mapping path="/**/*.jpg"/>
    <mvc:exclude-mapping path="/**/*.jpeg"/>
    <mvc:exclude-mapping path="/**/*login*"/>
    <mvc:exclude-mapping path="/**/*Login*"/>
    <bean class="com.luwei.console.mg.interceptor.VisitInterceptor"></bean>
  </mvc:interceptor>
</mvc:interceptors>

방안 2. 기본 정적 자원 처리 Servlet을 사용하여 정적 자원 처리 (spring-mvc.xml, web.xml 관련)
spring-mvc.xml에서 기본 서브렛 사용

 <mvc:default-servlet-handler/>
웹에서xml에서 정적 자원 처리 증가

<servlet-mapping>  
  <servlet-name>default</servlet-name>  
  <url-pattern>*.js</url-pattern>  
  <url-pattern>*.css</url-pattern>  
  <url-pattern>/assets/*"</url-pattern>  
  <url-pattern>/images/*</url-pattern>  
</servlet-mapping>
하지만 현재 설정은 Spring의 Dispatcher 앞에 있어야 합니다.
시나리오 3, Spring의 전역 차단 설정을 *로 수정합니다.do의 차단 (웹.xml 관련)

<servlet>
  <servlet-name>SpringMVC</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring-mvc.xml</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
  <async-supported>true</async-supported>
</servlet>
<servlet-mapping>
  <servlet-name>SpringMVC</servlet-name>
  <url-pattern>*.do</url-pattern>
</servlet-mapping>
이렇게 설정하면 Spring은''으로만 설정됩니다.do'마지막 요청을 처리하고 정적 자원을 더 이상 유지하지 않습니다.
이 세 가지 방안에 대한 우열 분석:
첫 번째 방안은 설정이 비교적 비대하고 여러 개의 차단기가 있을 때 파일 줄 수를 증가하므로 사용하는 것을 추천하지 않는다.두 번째 방안은 기본 Servlet을 사용하여 자원 파일에 접근하고 Spring은 모든 요청을 차단한 다음에 자원 파일을 기본 Sevlet으로 처리하여 성능상 손실이 적다.세 번째 시나리오 Spring은''으로 처리됩니다.do'마지막 접근은 성능적으로는 더욱 효율적이지만, 재접근 경로에서는 반드시'으로.do'엔딩, URL이 점잖지 않습니다.
상술한 바를 종합하면, 제2와 제3의 중안을 사용하는 것을 추천한다.
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.

좋은 웹페이지 즐겨찾기