導航:首頁 > 凈水問答 > aspnetmvc異常過濾器

aspnetmvc異常過濾器

發布時間:2024-05-10 15:28:37

『壹』 MVC過濾器,怎麼排除某個Action不使用Controller下的過濾器

當ActionInvoker在執行目標Action方法之前,會根據Order和Scope屬性對用於封裝的Filter對象進行排序。然後根據當前ControllerContext和ActionDescriptro創建一個ActionExecutingContext對象,並將其作為參數依次調用所有ActionFilter的OnActionExecuting方法。在這之後真正的目標Action方法被執行,ActionInvoker隨後執行後續的篩選操作。具體來說,它根據當前ControllerContext、ActionDescriptro以及Action方法執行過程中拋出的異常創建一個ActionExecutedContext對象。該ActionExecutedContext的Cancel屬性為False,如果Action方法返回一個ActionResult對象,該對象將會作為該ActionExecutedContext的Result屬性。接下來按照相反的次序依次調用ActionFilter對象的OnActionExecuted方法,執行過程中的ActionFilter可以修改ActionExecutedContext的Result屬性。當整個ActionFilter鏈執行結束之後,ActionExecutedContext的Result屬性返回的ActionResult將會作為對當前請求的響應。右圖基本上反映了連同目標Action在內的整個ActionFilter鏈的執行過程。

『貳』 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頁面上,並且可以檢查進入這些資源的請求信息。



『肆』 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

『伍』 C# MVC Filter過濾器如何停止往下執行

你這是開發mvc可不是開發asp,什麼年代了還Response.Write呢?

設置filterContext的Result為一個ViewResult來阻止執行Action

閱讀全文

與aspnetmvc異常過濾器相關的資料

熱點內容
車空調濾芯有什麼作用 瀏覽:508
edi是哪個城市的縮寫 瀏覽:601
污水處理廠都有什麼內容 瀏覽:245
邁騰gte空氣凈化器怎麼開啟 瀏覽:743
燃氣濾芯怎麼拆 瀏覽:360
山東清洗鍋爐水垢 瀏覽:95
能源動力部污水處理是干什麼的 瀏覽:148
超濾常用的工作壓力 瀏覽:392
家用凈水器的水屬於什麼水 瀏覽:642
杭州凱德湖墅水垢 瀏覽:826
巧去廁所水垢 瀏覽:547
什麼濾芯半年一換 瀏覽:275
超濾膜凈水器沒效果 瀏覽:993
純水手機什麼意思 瀏覽:973
耐火型酚醛樹脂氧指數 瀏覽:986
12時蒸餾水的ph 瀏覽:926
神剛挖機提升器 瀏覽:184
簾式超濾膜組件 瀏覽:829
樹脂濾芯發黃 瀏覽:279
小飲水機怎麼放置好 瀏覽:365