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

springmvc4過濾器

發布時間:2025-01-12 20:57:11

① springmvc過濾器和攔截器的區別

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

攔截器的代碼實現(以struts2為例):
1、在xml文件中如何定義攔截器
<interceptors>
<interceptor name="filterIPInterceptor"
class="com.xxxx.web.FilterIPActionInterceptor" />
<interceptor-stack name="filterIPStack">
<interceptor-ref name="defaultStack" />

<interceptor-ref name="filterIPInterceptor" />
</interceptor-stack>
</interceptors>

2、怎麼遍別寫自定義攔截器

public class FilterIPActionInterceptor extends AbstractInterceptor
{
/** 日誌控制. */
private final Log log = LogFactory.getLog(getClass());

/**
* @see com.opensymphony.xwork2.interceptor.AbstractInterceptor#intercept(com.opensymphony.xwork2.ActionInvocation)
*/
@Override

② SpringMVC的攔截器和過濾器的區別與聯系

首先給介紹下過濾器和攔截器的區別:
(1)攔截器是基於Java的反射機制的,而過濾器是基於函數回調。
(2)攔截器不依賴與servlet容器,過濾器依賴與servlet容器。
(3)攔截器只能對action請求起作用,而過濾器則可以對幾乎所有的請求起作用。
(4)攔截器可以訪問action上下文、值棧里的對象,而過濾器不能訪問。
(5)在action的生命周期中,攔截器可以多次被調用,而過濾器只能在容器初始化時被調用一次。
(6)攔截器可以獲取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()方法之後,在return ModelAndView之前進行,可以操控Controller的ModelAndView內容。
c.afterCompletion()方法是在過濾器返回給前端前一步執行,也就是在[chain.doFilter(request, response)]
[System.out.println("after...")]之間執行。
3.SpringMVC的機制是由同一個Servlet來分發請求給不同的Controller,其實這一步是在Servlet的service()方法
中執行的。所以過濾器、攔截器、service()方法,dispatc()方法的執行順序應該是這樣的如下圖:

③ SpringMVC的攔截器和過濾器的區別與聯系

攔截器與過濾器的區別 :

  1. 攔截器是基於java的反射機制的,而過濾器是基於函數回調。

  2. 攔截器不依賴與servlet容器,過濾器依賴與servlet容器。

  3. 攔截器只能對action請求起作用,而過濾器則可以對幾乎所有的請求起作用。

  4. 攔截器可以訪問action上下文、值棧里的對象,而過濾器不能訪問。

  5. 在action的生命周期中,攔截器可以多次被調用,而過濾器只能在容器初始化時被調用一次。

攔截器,在AOP(Aspect-Oriented Programming)中用於在某個方法或欄位被訪問之前,進行攔截然後在之前或之後加入某些操作。

過濾器是一個程序,它先於與之相關的servlet或JSP頁面運行在伺服器上。過濾器可附加到一個或多個servlet或JSP頁面上,並且可以檢查進入這些資源的請求信息。



閱讀全文

與springmvc4過濾器相關的資料

熱點內容
生活污水清理請示報告 瀏覽:541
日本地坪環氧樹脂漆 瀏覽:95
治污水治垃圾小品 瀏覽:447
凈水機龍頭怎麼和管連接 瀏覽:189
樓房的糞便污水怎麼處 瀏覽:816
sla樹脂如何選擇 瀏覽:106
葡萄皮渣酒泥蒸餾 瀏覽:291
21帝豪怎麼換空調濾芯 瀏覽:827
雨污水管網通水實驗 瀏覽:155
商業凈水行業是干什麼的 瀏覽:178
材質過濾 瀏覽:882
地寶機器人濾芯是什麼 瀏覽:536
燒水有一層水垢 瀏覽:845
寶馬車為什麼點火機油濾芯冒油 瀏覽:569
鋁燒水壺可以用檸檬酸除垢嗎 瀏覽:845
現代領動空調濾芯和什麼車通用 瀏覽:283
樂透凈水器怎麼安裝 瀏覽:743
空氣濾芯如何重復使用 瀏覽:834
現在的飲水機多少錢一台 瀏覽:97
比樹脂重的做玩具材料 瀏覽:451