最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解springmvc攔截器攔截靜態(tài)資源

 更新時(shí)間:2017年01月20日 16:13:24   作者:wei906  
本篇文章主要介紹了詳解springmvc攔截器攔截靜態(tài)資源,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。

springmvc攔截器interceptors

springmvc攔截器能夠?qū)φ?qǐng)求的資源路徑進(jìn)行攔截,極大的簡(jiǎn)化了攔截器的書寫。但是,千萬千萬要注意一點(diǎn):靜態(tài)資源的放行。

上代碼:

<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定義一個(gè)Interceptor,直接定義在mvc:interceptors根下面的Interceptor將攔截所有的請(qǐng)求  
    <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下面的表示是對(duì)特定的請(qǐng)求才進(jìn)行攔截的 --> 
      <beans:bean class="com.myTree.interceptor.LoginInterceptor" > 
      </beans:bean> 
    </mvc:interceptor> 
  </mvc:interceptors> 

問題來了,在請(qǐng)求jsp頁面的時(shí)候,你的靜態(tài)資源的訪問仍然會(huì)被自定義攔截器攔截,這會(huì)導(dǎo)致程序運(yùn)行的效率大大下降,還會(huì)不停的跳轉(zhuǎn)到攔截器的邏輯。主要原因是

<mvc:mapping path="/**" /> 

會(huì)對(duì)所有的請(qǐng)求資源進(jìn)行攔截,雖然靜態(tài)資源已經(jīng)排除了,但還是會(huì)被攔截到。

如何解決這個(gè)bug呢?

主要有三種方式:

1、修改請(qǐng)求的url地址。

 如果請(qǐng)求的url地址都是以*.do結(jié)尾,那么攔截器中的配置可以變?yōu)閿r截以do結(jié)尾的資源,靜態(tài)資源自然就不會(huì)被攔截到了;
2、在自定義攔截器中對(duì)資源進(jìn)行判斷,如果滿足需要排除的資源,就進(jìn)行放行。

<!-- 攔截器配置 -->  
  <mvc:interceptors>  
   <!-- session超時(shí) -->  
   <mvc:interceptor>  
    <mvc:mapping path="/*/*"/>  
    <bean class="com.myTree.interceptor.LoginInterceptor">  
     <property name="allowUrls">  
      <list>  
       <!-- 如果請(qǐng)求中包含以下路徑,則不進(jìn)行攔截 -->  
       <value>/login</value>  
       <value>/js</value>  
       <value>/css</value>  
       <value>/image</value>  
       <value>/images</value>  
      </list>  
     </property>  
    </bean>  
   </mvc:interceptor>  
  </mvc:interceptors>  

在攔截器中設(shè)定不攔截的屬性: 

/** 
 * 處理登錄攔截器 
 */  
public class LoginInterceptor implements HandlerInterceptor{  
    
  public String[] allowUrls;//還沒發(fā)現(xiàn)可以直接配置不攔截的資源,所以在代碼里面來排除  
    
  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、設(shè)置web.xml中的默認(rèn)攔截器,不攔截靜態(tài)資源

在springmvc的Dispatcher中配置<mvc:default-servlet-handler />(一般Web應(yīng)用服務(wù)器默認(rèn)的Servlet名稱是"default",所以這里我們激活Tomcat的defaultServlet來處理靜態(tài)文件,在web.xml里配置如下代碼即可:)

<!--該servlet為tomcat,jetty等容器提供,將靜態(tài)資源映射從/改為/static/目錄,如原來訪問http://localhost/foo.css,現(xiàn)在http://localhost/static/foo.css -->  
<!-- 不攔截靜態(tài)文件 -->  
<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>  

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • java合并多個(gè)文件的實(shí)例代碼

    java合并多個(gè)文件的實(shí)例代碼

    在本篇文章里小編給大家整理的是關(guān)于java合并多個(gè)文件的實(shí)例代碼,有需要的朋友們可以參考學(xué)習(xí)下。
    2020-02-02
  • Java8函數(shù)式接口UnaryOperator用法示例

    Java8函數(shù)式接口UnaryOperator用法示例

    這篇文章主要介紹了Java8函數(shù)式接口UnaryOperator用法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • Spring BeanUtils忽略空值拷貝的方法示例代碼

    Spring BeanUtils忽略空值拷貝的方法示例代碼

    本文用示例介紹Spring(SpringBoot)如何使用BeanUtils拷貝對(duì)象屬性忽略空置,忽略null值拷貝屬性的用法,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2022-03-03
  • Java大文本并行計(jì)算實(shí)現(xiàn)過程解析

    Java大文本并行計(jì)算實(shí)現(xiàn)過程解析

    這篇文章主要介紹了Java大文本并行計(jì)算如何實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • SpringBoot中@RestControllerAdvice @ExceptionHandler異常統(tǒng)一處理類失效原因分析

    SpringBoot中@RestControllerAdvice @ExceptionHandler異常統(tǒng)一處

    這篇文章主要介紹了SpringBoot中@RestControllerAdvice @ExceptionHandler異常統(tǒng)一處理類失效原因,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Java 配置log 將日志信息輸出到指定日志文件中

    Java 配置log 將日志信息輸出到指定日志文件中

    這篇文章主要介紹了Java 配置log 將日志信息輸出到指定日志文件中,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-09-09
  • Struts中action線程安全問題解析

    Struts中action線程安全問題解析

    這篇文章主要介紹了Struts中action線程安全問題解析,涉及實(shí)例代碼,還是挺不錯(cuò)的,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-10-10
  • 關(guān)于SpringCloudStream配置問題

    關(guān)于SpringCloudStream配置問題

    這篇文章主要介紹了關(guān)于SpringCloudStream配置問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 淺談Java中的class類

    淺談Java中的class類

    這篇文章主要介紹了淺談Java中的class類,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • 關(guān)于jackson序列化和feign返回值的問題

    關(guān)于jackson序列化和feign返回值的問題

    這篇文章主要介紹了關(guān)于jackson序列化和feign返回值的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03

最新評(píng)論

揭东县| 共和县| 东阿县| 会东县| 抚宁县| 无锡市| 华亭县| 东乌珠穆沁旗| 浠水县| 长顺县| 娱乐| 丰台区| 高州市| 牙克石市| 万州区| 瓦房店市| 靖远县| 洛川县| 合肥市| 西和县| 保亭| 昌黎县| 陇南市| 昌宁县| 共和县| 河北省| 屏山县| 清涧县| 尼玛县| 吴旗县| 澄城县| 安顺市| 肃宁县| 万全县| 林西县| 曲松县| 阿克陶县| 紫阳县| 湖南省| 洛阳市| 浮梁县|