스프링mvc 차단기 정적 자원 차단
springmvc 차단기는 요청한 자원 경로를 차단할 수 있어 차단기의 쓰기를 크게 간소화할 수 있습니다.그러나 제발 주의해야 할 것은 정적 자원의 방출이다.
위 코드:
<mvc:resources mapping="/resources/**" location="/static/resources" />
<mvc:resources mapping="/static/css/**" location="/static/css/" />
<mvc:resources mapping="/static/images/**" location="/static/images/" />
<mvc:resources mapping="/static/js/**" location="/static/js/" />
<mvc:interceptors>
<!-- bean Interceptor, mvc:interceptors Interceptor
<bean class="com.myTree.interceptor.LoginInterceptor" />-->
<mvc:interceptor>
<mvc:mapping path="/**" />
<!-- -->
<mvc:exclude-mapping path="/Login"/>
<mvc:exclude-mapping path="/login"/>
<mvc:exclude-mapping path="/sattic/**"/>
<!-- mvc:interceptor -->
<beans:bean class="com.myTree.interceptor.LoginInterceptor" >
</beans:bean>
</mvc:interceptor>
</mvc:interceptors>
문제가 생겼습니다. jsp 페이지를 요청할 때 정적 자원에 대한 접근은 사용자 정의 차단기에 의해 차단됩니다. 이로 인해 프로그램 운행의 효율이 크게 떨어지고 차단기의 논리로 끊임없이 넘어갈 수 있습니다.주요 원인은
<mvc:mapping path="/**" />
모든 요청 자원을 차단합니다. 정적 자원은 배제되었지만 차단됩니다.어떻게 이 버그를 해결합니까?
주로 세 가지 방법이 있다.
1. 요청한 URL 주소를 수정합니다.
요청한 URL 주소가 *이면do가 끝나면 차단기의 설정은 do로 끝나는 자원을 차단하는 것으로 바뀌고 정적 자원은 자연히 차단되지 않는다.
2. 사용자 정의 차단기에서 자원을 판단하고 배제해야 할 자원을 만족시키면 실행한다.
<!-- -->
<mvc:interceptors>
<!-- session -->
<mvc:interceptor>
<mvc:mapping path="/*/*"/>
<bean class="com.myTree.interceptor.LoginInterceptor">
<property name="allowUrls">
<list>
<!-- , -->
<value>/login</value>
<value>/js</value>
<value>/css</value>
<value>/image</value>
<value>/images</value>
</list>
</property>
</bean>
</mvc:interceptor>
</mvc:interceptors>
차단기에서 차단되지 않는 속성을 설정합니다.
/**
*
*/
public class LoginInterceptor implements HandlerInterceptor{
public String[] allowUrls;// ,
public void setAllowUrls(String[] allowUrls) {
this.allowUrls = allowUrls;
}
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
Object handler) throws Exception {<pre name="code" class="java"> <span style="white-space:pre"> </span>String requestUrl = request.getRequestURI().replace(request.getContextPath(), "");
System.out.println(requestUrl);
if(null != allowUrls && allowUrls.length>=1){
for(String url : allowUrls) {
if(requestUrl.contains(url)) {
return true;
}
}
}
3. 웹을 설정합니다.xml의 기본 차단기, 정적 자원 차단 안 함springmvc의 Dispatcher에서
<!-- servlet tomcat,jetty , / /static/ , http://localhost/foo.css, http://localhost/static/foo.css -->
<!-- -->
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/js/*</url-pattern>
<url-pattern>/css/*</url-pattern>
<url-pattern>/images/*</url-pattern>
<url-pattern>/fonts/*</url-pattern>
</servlet-mapping>
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.