導航:首頁 > 凈水問答 > sturs2過濾器springmvc

sturs2過濾器springmvc

發布時間:2020-12-25 06:47:16

㈠ spring mvc 過濾器有幾種

1. 使用spring mvc resource 去讀取靜態文件
比如在 WEN-INF 下建立static 文件夾,並在 static 文件夾裡面建立css 文件夾,然後建立 1.css 文件.
修改 mvc-dispatcher-servlet.xml 文件
程序代碼

<mvc:resources mapping="/static/**" location="/WEB-INF/static/"/>

這樣配置之後,可以通過 http://your-ip:port/your-app/static/css/1.css 直接訪問了。

2. 採用 default servlet
在 web.xml 裡面配置
程序代碼

<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/static/*</url-pattern>
</servlet-mapping>

這樣做了之後,所有前綴為static 的請求都交給default servlet 去處理。如果你請求 http://your-ip:port/your-app/static/css/1.css ,就表示在 webcontent 目錄下的css文件夾下的1.css文件。

3. 通過文件擴展名進行處理
在 web.xml 裡面配置
程序代碼

<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.png</url-pattern>
<url-pattern>*.js</url-pattern>
<url-pattern>*.css</url-pattern>
</servlet-mapping>

4. 對spring servlet 不用restful 風格。在url 上加上前綴
程序代碼

<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>/app</url-pattern>
</servlet-mapping>

這樣做的目的是讓 dispatchservlet 去攔截以/app 開頭的那些 URL,並不攔截css,js等。

5. 對spring servlet 不用restful 風格。在url 上加上後綴
程序代碼

<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

這樣做的目的是讓 dispatchservlet 只攔截*.do 的url. 並不攔截css,js等。

上面介紹的5種方法,根據情況自己任意選擇一種,現在沒辦法說那種好,那種方法不好,都有可取之處,用在不同的場景而已。

㈡ 在springmvc中使用過濾器chain.dofilter 出不去

如果走chain的話,通過chain.doFilter(request,response)這個方法會立即跳轉到被攔截的servlet並且執行完還要再返回filter.chain相當於一扇門,從這扇門出去再從這扇門回來.調用filter的方法就是在web.xml中配置,需要配置一個與你需要攔截的servlet相同的url-pattern.
<!-- 配置一個過濾器 -->
<filter>
<filter-name>suibianxie</filter-name>
<filter-class>com.etoak.filter.MyEncoding</filter-class>
<!-- 配置一個私有參數 -->
<init-param>
<param-name>mycode</param-name>
<param-value>gbk</param-value>
</init-param>
</filter>
<!-- 攔截的先後順序和mapping的順序有關 -->
<filter-mapping>
<filter-name>suibianxie</filter-name>
<!-- 注意這里和要攔截的servlet的url-pattern必須一致,等於是過濾器
搶在servlet之前攔截住了 -->
<url-pattern>/servlet/Test</url-pattern>
</filter-mapping>
<!-- 配置第二個過濾器 -->
<filter>
<filter-name>suibianxie2</filter-name>
<filter-class>com.etoak.filter.Naming</filter-class>
</filter>
<filter-mapping>
<filter-name>suibianxie2</filter-name>
<url-pattern>/servlet/Test</url-pattern>
</filter-mapping>

<servlet>
<servlet-name>Test</servlet-name>
<servlet-class>com.etoak.servlet.Test</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Test</servlet-name>
<url-pattern>/servlet/Test</url-pattern>
</servlet-mapping>

㈢ spring mvc攔截器 和 過濾器哪個先執行

先執行filter,只有限制性過濾器之後才可以進入容器執行攔截

㈣ spring+springmvc+mybatis框架過濾一個.action的過濾器怎麼寫

<filter>
<filter-name>FntUploadLogin</filter-name>
<filter-class>platform.kshxx.app.ssdmt.filters.FntUploadLogin</filter-class>
</filter>
<filter-mapping>
<filter-name>FntUploadLogin</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
試試

㈤ 過濾器和SpringMVC的攔截器的區別

過濾器和攔截器的區別:

①攔截器是基於Java的反射機制的,而過濾器是基於函數回調。
②攔截器不依賴與servlet容器,過濾器依賴與servlet容器。
③攔截器只能對action請求起作用,而過濾器則可以對幾乎所有的請求起作用。
④攔截器可以訪問action上下文、值棧里的對象,而過濾器不能訪問。
⑤在action的生命周期中,攔截器可以多次被調用,而過濾器只能在容器初始化時被調用一次。

⑥攔截器可以獲取IOC容器中的各個bean,而過濾器就不行,這點很重要,在攔截器里注入一個service,可以調用業務邏輯。

寫了點測試代碼,順便整理一下思路,搞清楚這幾者之間的順序:

1.過濾器是JavaEE標准,採用函數回調的方式進行。是在請求進入容器之後,還未進入Servlet之前進行預處理,並且在請求結束返回給前端這之間進行後期處理。

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
System.out.println("before...");
chain.doFilter(request, response);
System.out.println("after...");
}

chain.doFilter(request, response);這個方法的調用作為分水嶺。事實上調用Servlet的doService()方法是在chain.doFilter(request, response);這個方法中進行的。

2.攔截器是被包裹在過濾器之中的。

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("preHandle");
return true;
}

@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("postHandle");
}

@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("afterCompletion");
}

a.preHandle()這個方法是在過濾器的chain.doFilter(request, response)方法的前一步執行,也就是在 [System.out.println("before...")][chain.doFilter(request, response)]之間執行。

b.preHandle()方法之後,在returnModelAndView之前進行,可以操控Controller的ModelAndView內容。

c.afterCompletion()方法是在過濾器返回給前端前一步執行,也就是在[chain.doFilter(request, response)][System.out.println("after...")]之間執行。

3.SpringMVC的機制是由同一個Servlet來分發請求給不同的Controller,其實這一步是在Servlet的service()方法中執行的。所以過濾器、攔截器、service()方法,dispatc()方法的執行順序應該是這樣的,大致畫了個圖:其實非常好測試,自己寫一個過濾器,一個攔截器,然後在這些方法中都加個斷點,一路F8下去就得出了結論。

㈥ struts2和springMVC的區別與特點

1)springmvc的入口是一個servlet,即前端控制器,例如:*.action
struts2入口是一個回filter過慮器,即前端過濾器,例如:/*

2)springmvc是基於答方法開發,傳遞參數是通過方法形參,可以設計為單例
struts2是基於類開發,傳遞參數是通過類的屬性,只能設計為多例

3)springmvc通過參數解析器是將request對象內容進行解析成方法形參,將響應數據和頁面封裝成 ModelAndView對象,最後又將模型數據通過request對象傳輸到頁面
struts採用值棧存儲請求和響應的數據,通過OGNL存取數據

㈦ 有過濾器的springmvc代碼怎麼用

不過實現的方式有以下幾類:
(1) 直接實現Filter,這一類過濾器只有CompositeFilter;
(2) 繼承抽象類GenericFilterBean,該類實現了javax.servlet.Filter,這一類的過濾器只有一個,即DelegatingFilterProxy;
(3) 繼承抽象類OncePerRequestFilter,該類為GenericFilterBean的直接子類,這一類過濾器包括CharacterEncodingFilter、HiddenHttpMethodFilter、HttpPutFormContentFilter、RequestContextFilter和ShallowEtagHeaderFilter;
(4) 繼承抽象類AbstractRequestLoggingFilter,該類為OncePerRequestFilter的直接子類,這一類過濾器包括CommonsRequestLoggingFilter、和。
過濾器放在容器結構的什麼位置?
過濾器放在web資源之前,可以在請求抵達它所應用的web資源(可以是一個Servlet、一個Jsp頁面,甚至是一個HTML頁面)之前截獲進入的請求,並且在它返回到客戶之前截獲輸出請求。Filter:用來攔截請求,處於客戶端與被請求資源之間,目的是重用代碼。Filter鏈,在web.xml中哪個先配置,哪個就先調用。在filter中也可以配置一些初始化參數。
Java中的Filter 並不是一個標準的Servlet ,它不能處理用戶請求,也不能對客戶端生成響應。 主要用於對HttpServletRequest 進行預處理,也可以對HttpServletResponse 進行後處理,是個典型的處理鏈。
Filter 有如下幾個種類:
l 用戶授權的Filter: Filter 負責檢查用戶請求,根據請求過濾用戶非法請求。
l 日誌Filter: 詳細記錄某些特殊的用戶請求。
l 負責解碼的Filter: 包括對非標准編碼的請求解碼。
l 能改變XML 內容的XSLTFilter 等。
Filter 有如下幾個用處 :
l 在HttpServletRequest 到達Servlet 之前,攔截客戶的HttpServletRequest 。
l 根據需要檢查HttpServletRequest ,也可以修改HttpServletRequest 頭和數據。
l 在HttpServletResponse 到達客戶端之前,攔截HttpServletResponse 。
l 根據需要檢查HttpServletResponse ,可以修改HttpServletResponse 頭和數據。
創建一個 Filter 只需兩個步驟

㈧ spring-mvc用戶登錄怎麼添加過濾器

在struts2中用過filter過濾器,在springmvc中還有攔截器,它們都能過濾請求,但是到底有什麼

㈨ spring mvc攔截器與spring攔截器有何區別

在struts2中用過filter過濾器,在springmvc中還有攔截器,它們都能過濾請求,但是到底有什麼區別呢?一、定義攔截器:是在面向切面編程的就是在你的service或者一個方法,前調用一個方法,或者在方法後調用一個方法比如動態代理就是攔截器的簡單實現,在你調用方法前列印出字元串(或者做其它業務邏輯的操作),也可以在你調用方法後列印出字元串,甚至在你拋出異常的時候做業務邏輯的操作。過濾器:是在javaweb中,你傳入的request、response提前過濾掉一些信息,或者提前設置一些參數,然後再傳入servlet或者struts的action進行業務邏輯,比如過濾掉非法url(不是login.do的地址請求,如果用戶沒有登陸都過濾掉),或者在傳入servlet或者struts的action前統一設置字元集,或者去除掉一些非法字元.。二、xml文件配置1.filter該過濾器的方法是創建一個類XXXFilter實現此介面,並在該類中的doFilter方法中聲明過濾規則,然後在配置文件web.xml中聲明他所過濾的路徑XXXFiltercom.web.util.XXXFilterXXXFilter*.actionXXXFiltercom.web.util.XXXFilterXXXFilter*.action2.Interceptor它也要實現HandlerInterceptor介面,這里只介紹方法註解配置三、具體區別filterInterceptor多個的執行順序根據filtermapping配置的先後順序按照配置的順序,但是可以通過order控制順序規范在Servlet規范中定義的,是Servlet容器支持的Spring容器內的,是Spring框架支持的。使用范圍只能用於Web程序中既可以用於Web程序,也可以用於Application、Swing程序中。深度Filter在只在Servlet前後起作用攔截器能夠深入到方法前後、異常拋出前後等四、總結兩者的本質區別:攔截器是基於java的反射機制的,而過濾器是基於函數回調。從靈活性上說攔截器功能更強大些,Filter能做的事情,他都能做,而且可以在請求前,請求後執行,比較靈活。Filter主要是針對URL地址做一個編碼的事情、過濾掉沒用的參數、安全校驗(比較泛的,比如登錄不登錄之類),太細的話,還是建議用interceptor。不過還是根據不同情況選擇合適的。

閱讀全文

與sturs2過濾器springmvc相關的資料

熱點內容
濾芯上的標簽如何清除 瀏覽:449
大眾寶來6at變速箱濾芯在哪裡 瀏覽:789
哈爾濱道外污水處理廠 瀏覽:115
含煤廢水的主要成分 瀏覽:156
為什麼污水井噴 瀏覽:617
廣汽傳祺為什麼一萬公里換汽油濾芯 瀏覽:857
萬和凈水器提示保養需要換什麼 瀏覽:227
反滲透膜哪個品牌好 瀏覽:695
練焦工業廢水設計回用規范 瀏覽:212
乙二醇是蒸餾水嗎 瀏覽:320
為什麼水族館魚缸里的水沒有水垢 瀏覽:425
葡萄糖酸鈉廢水分散劑 瀏覽:352
嘉興污水排放標准最新 瀏覽:328
油煙凈化器保養表怎麼做 瀏覽:113
廣東滌綸紡粘無紡布過濾無紡布 瀏覽:50
茅台純凈水多少錢一瓶 瀏覽:797
瀝青廢水有什麼影響 瀏覽:663
agcen艾吉森空氣凈化器怎麼樣 瀏覽:272
3012反滲透膜 瀏覽:393
鮮知鮮覺空氣凈化器怎麼樣 瀏覽:672