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

淺談SpringMVC的攔截器(Interceptor)和Servlet 的過濾器(Filter)的區(qū)別與聯(lián)系 及SpringMVC 的配置文件

 更新時間:2020年07月23日 10:33:08   作者:淺笑安然Shunia  
這篇文章主要介紹了淺談SpringMVC的攔截器(Interceptor)和Servlet 的過濾器(Filter)的區(qū)別與聯(lián)系 及SpringMVC 的配置文件,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

1.過濾器:

  依賴于servlet容器。在實現(xiàn)上基于函數(shù)回調(diào),可以對幾乎所有請求進行過濾,但是缺點是一個過濾器實例只能在容器初始化時調(diào)用一次。使用過濾器的目的是用來做一些過濾操作,獲取我們想要獲取的數(shù)據(jù).

  比如:在過濾器中修改字符編碼;在過濾器中修改 HttpServletRequest的一些參數(shù),包括:過濾低俗文字、危險字符等

  關(guān)于過濾器的一些用法可以參考我寫過的這些文章:

    繼承HttpServletRequestWrapper以實現(xiàn)在Filter中修改HttpServletRequest的參數(shù):https://www.zifangsky.cn/677.html

    在SpringMVC中使用過濾器(Filter)過濾容易引發(fā)XSS的危險字符:https://www.zifangsky.cn/683.html

2.攔截器:

  依賴于web框架,在SpringMVC中就是依賴于SpringMVC框架。在實現(xiàn)上基于Java的反射機制,屬于面向切面編程(AOP)的一種運用。由于攔截器是基于web框架的調(diào)用.

  因此可以使用spring的依賴注入(DI)進行一些業(yè)務(wù)操作,同時一個攔截器實例在一個controller生命周期之內(nèi)可以多次調(diào)用。但是缺點是只能對controller請求進行攔截,對其他的一些比如直接訪問靜態(tài)資源的請求則沒辦法進行攔截處理。

  關(guān)于攔截器的一些用法可以參考我寫過的這些文章:

    SpringMVC中使用攔截器(interceptor)攔截CSRF攻擊(修):https://www.zifangsky.cn/671.html

    SpringMVC中使用Interceptor+cookie實現(xiàn)在一定天數(shù)之內(nèi)自動登錄:https://www.zifangsky.cn/700.html

3.執(zhí)行順序

  過濾器的運行是依賴于servlet容器的,跟springmvc等框架并沒有關(guān)系。并且多個過濾器的執(zhí)行順序跟web.xml文件中定義的先后關(guān)系有關(guān)。

  攔截器的執(zhí)行順序跟在SpringMVC的配置文件中定義的先后順序有關(guān)。

SpringMVC的配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<beans .......>
 <mvc:default-servlet-handler />

 <context:component-scan base-package="com.netease.mmc.demo.web">
  <!-- enable controller advice -->
  <context:include-filter type="annotation" expression="org.springframework.web.bind.annotation.ControllerAdvice"/>
 </context:component-scan>
 <context:component-scan base-package="com.netease.mmc.demo.imdemo.web"/>

 <context:annotation-config />

 <mvc:interceptors>
  <mvc:interceptor>
   <mvc:mapping path="/**"/>
   <bean class="com.netease.mmc.demo.common.spring.interceptor.DDOSInterceptor">
    <property name="close" value="false"/>
    <property name="maxRequest" value="2000"/>
    <property name="ttlSeconds" value="10"/>
   </bean>
  </mvc:interceptor>
  <mvc:interceptor>
   <mvc:mapping path="/**"/>
   <bean class="com.netease.mmc.demo.common.spring.interceptor.WebContextHolderInterceptor"/>
  </mvc:interceptor>
  <mvc:interceptor>
   <mvc:mapping path="/api/**"/>
   <bean class="com.netease.mmc.demo.web.interceptor.ValidateAppKeyInterceptor" />
  </mvc:interceptor>
 </mvc:interceptors>

 <mvc:annotation-driven ignore-default-model-on-redirect="true">
  <!-- message converters -->
  <mvc:message-converters>
   <bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>
   <bean class="org.springframework.http.converter.StringHttpMessageConverter">
    <constructor-arg value="UTF-8"/>
   </bean>
   <bean class="org.springframework.http.converter.xml.SourceHttpMessageConverter"/>
   <bean class="org.springframework.http.converter.FormHttpMessageConverter"/>
   <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
    <property name="objectMapper" ref="objectMapper"/>
   </bean>
  </mvc:message-converters>
 </mvc:annotation-driven>

 <!-- view resolver -->
 <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
  <property name="contentNegotiationManager" ref="contentNegotiationManager"/>
  <!-- api server has no page view resolvers, add viewResolvers config here if required -->
  <property name="defaultViews">
   <list>
    <bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView">
     <property name="objectMapper" ref="objectMapper"/>
     <property name="contentType" value="application/json;charset=UTF-8"/>
     <property name="modelKeys">
      <set>
       <value>res</value>
       <value>msg</value>
       <value>errmsg</value>
      </set>
     </property>
    </bean>
    <bean class="org.springframework.web.servlet.view.xml.MarshallingView">
     <property name="marshaller" ref="xstreamMarshaller"/>
     <property name="modelKey" value="data"/>
     <property name="contentType" value="application/xml"/>
    </bean>
   </list>
  </property>
 </bean>

 <bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
  <property name="mediaTypes">
   <map>
    <entry key="json" value="application/json;charset=UTF-8"/>
    <entry key="xml" value="application/xml;charset=UTF-8"/>
    <entry key="html" value="text/html;charset=UTF-8"/>
   </map>
  </property>
  <property name="defaultContentType" value="application/json;charset=UTF-8"/>
 </bean>

 <bean id="objectMapper" class="com.fasterxml.jackson.databind.ObjectMapper">
  <property name="serializationInclusion" value="NON_NULL" />
 </bean>

 <bean id="xstreamMarshaller" class="org.springframework.oxm.xstream.XStreamMarshaller">
  <property name="autodetectAnnotations" value="true" />
  <property name="streamDriver">
   <bean class="com.thoughtworks.xstream.io.xml.DomDriver" />
  </property>
 </bean>

 <aop:aspectj-autoproxy/>
</beans>

到此這篇關(guān)于淺談SpringMVC的攔截器(Interceptor)和Servlet 的過濾器(Filter)的區(qū)別與聯(lián)系 及SpringMVC 的配置文件的文章就介紹到這了,更多相關(guān)SpringMVC攔截器 Servlet過濾器 SpringMVC配置文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解決SpringBoot內(nèi)嵌Tomcat并發(fā)容量的問題

    解決SpringBoot內(nèi)嵌Tomcat并發(fā)容量的問題

    這篇文章主要介紹了解決SpringBoot內(nèi)嵌Tomcat并發(fā)容量的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 當(dāng)mybatis返回值遇見內(nèi)部類的問題

    當(dāng)mybatis返回值遇見內(nèi)部類的問題

    這篇文章主要介紹了當(dāng)mybatis返回值遇見內(nèi)部類的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 在Elasticsearch中添加字段的詳細(xì)步驟

    在Elasticsearch中添加字段的詳細(xì)步驟

    在ES中,增加字段相對比較容易,因為ES支持動態(tài)映射(Dynamic Mapping),這篇文章主要給大家介紹了關(guān)于在Elasticsearch中添加字段的詳細(xì)步驟,文中給出了詳細(xì)的代碼實例,需要的朋友可以參考下
    2024-07-07
  • java中Scanner類的簡單用法分享

    java中Scanner類的簡單用法分享

    這篇文章主要介紹了java中Scanner類的簡單用法,有需要的朋友可以參考一下
    2014-01-01
  • Swagger異常定位紀(jì)實Swagger設(shè)計問題分析

    Swagger異常定位紀(jì)實Swagger設(shè)計問題分析

    這篇文章主要為大家介紹了Swagger異常定位紀(jì)實Swagger設(shè)計的問題分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-02-02
  • jmeter基本使用小結(jié)

    jmeter基本使用小結(jié)

    jmeter是apache公司基于java開發(fā)的一款開源壓力測試工具,體積小,功能全,使用方便,是一個比較輕量級的測試工具,使用起來非常簡單。本文就簡單的介紹一下如何使用,感興趣的
    2021-11-11
  • 詳解SpringCloud-OpenFeign組件的使用

    詳解SpringCloud-OpenFeign組件的使用

    這篇文章主要介紹了SpringCloud-OpenFeign組件的使用,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • java調(diào)用ffmpeg實現(xiàn)轉(zhuǎn)換視頻

    java調(diào)用ffmpeg實現(xiàn)轉(zhuǎn)換視頻

    這篇文章主要為大家詳細(xì)介紹了java調(diào)用ffmpeg實現(xiàn)轉(zhuǎn)換視頻功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • Spring集成Druid連接池及監(jiān)控配置的全過程

    Spring集成Druid連接池及監(jiān)控配置的全過程

    java程序很大一部分要操作數(shù)據(jù)庫,為了提高性能操作數(shù)據(jù)庫的時候,有不得不使用數(shù)據(jù)庫連接池,下面這篇文章主要給大家介紹了關(guān)于Spring集成Druid連接池及監(jiān)控配置的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • Java解析變量公式的簡單示例

    Java解析變量公式的簡單示例

    在Java編程中,經(jīng)常會遇到需要解析表達(dá)式或公式的情況,特別是涉及到動態(tài)計算或配置項的場景,在本篇文章中,我將介紹如何在Java中解析變量公式,并給出一個簡單的實現(xiàn)示例,需要的朋友可以參考下
    2024-10-10

最新評論

潍坊市| 九江市| 始兴县| 富蕴县| 托克托县| 驻马店市| 旌德县| 连南| 建水县| 金坛市| 房产| 民权县| 井陉县| 平利县| 海阳市| 贺兰县| 阳春市| 汾西县| 河东区| 通河县| 合山市| 图木舒克市| 新平| 西青区| 钦州市| 来宾市| 琼中| 益阳市| 兴山县| 新余市| 延吉市| 鹤峰县| 隆昌县| 舟曲县| 内丘县| 兴隆县| 响水县| 阳信县| 水富县| 宽甸| 综艺|