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

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

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

springmvc攔截器interceptors

springmvc攔截器能夠對請求的資源路徑進行攔截,極大的簡化了攔截器的書寫。但是,千萬千萬要注意一點:靜態(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定義一個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頁面的時候,你的靜態(tài)資源的訪問仍然會被自定義攔截器攔截,這會導致程序運行的效率大大下降,還會不停的跳轉到攔截器的邏輯。主要原因是

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

會對所有的請求資源進行攔截,雖然靜態(tài)資源已經排除了,但還是會被攔截到。

如何解決這個bug呢?

主要有三種方式:

1、修改請求的url地址。

 如果請求的url地址都是以*.do結尾,那么攔截器中的配置可以變?yōu)閿r截以do結尾的資源,靜態(tài)資源自然就不會被攔截到了;
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;//還沒發(fā)現可以直接配置不攔截的資源,所以在代碼里面來排除  
    
  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、設置web.xml中的默認攔截器,不攔截靜態(tài)資源

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

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • java合并多個文件的實例代碼

    java合并多個文件的實例代碼

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

    Java8函數式接口UnaryOperator用法示例

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

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

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

    Java大文本并行計算實現過程解析

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

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

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

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

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

    Struts中action線程安全問題解析

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

    關于SpringCloudStream配置問題

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

    淺談Java中的class類

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

    關于jackson序列化和feign返回值的問題

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

最新評論

临夏市| 安丘市| 洛川县| 阿尔山市| 高雄县| 华亭县| 大方县| 花莲县| 灵丘县| 同江市| 龙岩市| 苍溪县| 冕宁县| 莫力| 容城县| 长春市| 乐平市| 新兴县| 平定县| 隆尧县| 永定县| 翼城县| 寿阳县| 承德市| 工布江达县| 云浮市| 静安区| 滦南县| 长白| 阿合奇县| 二连浩特市| 尚义县| 祥云县| 乌什县| 托克逊县| 凤城市| 唐山市| 印江| 孝昌县| 汝城县| 军事|