天天看點

struts2 FilterDispatcher 和 StrutsPrepareAndExecuteFilter 的差別

轉自:http://blog.csdn.net/s_ongfei/article/details/5811070

FilterDispatcher是struts2.0.x到2.1.2版本的核心過濾器.! 

StrutsPrepareAndExecuteFilter是自2.1.3開始就替代了FilterDispatcher的.! 

這樣的改革當然是有好處的.! 

為什麼這麼說.? 應該知道如果我們自己定義過濾器的話, 是要放在strtus2的過濾器之前的, 如果放在struts2過濾器之後,你自己的過濾器對action的過濾作用就廢了,不會有效!除非你是通路jsp/html! 

那我現在有需求, 我必須使用Action的環境,而又想在執行action之前拿filter做一些事, 用FilterDispatcher是做不到的.! 

那麼StrutsPrepareAndExecuteFilter可以把他拆分成StrutsPrepareFilter和StrutsExecuteFilter,可以在這兩個過濾器之間加上我們自己的過濾器.! 

給你打個比喻, 現在有病人要做手術, 現在struts2要做兩件事, 搭病床(環境),執行手術.! 那麼打麻藥的工作呢.? 不可能要病人站着打吧, 是以必須有病床的環境,打完麻藥之後再動手術.! 這個比喻非常形象了.!