struts2 FilterDispatcher 和 StrutsPrepareAndExec...

轉載自:http://kabuka.iteye.com/blog/1412528
html

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

StrutsPrepareAndExecuteFilter是自2.1.3開始就替代了FilterDispatcher的.! 
這樣的改革固然是有好處的.! 
爲何這麼說.? 應該知道若是咱們本身定義過濾器的話, 是要放在strtus2的過濾器以前的, 若是放在struts2過濾器以後,你本身的過濾器對action的過濾做用就廢了,不會有效!除非你是訪問jsp/html! 
那我如今有需求, 我必須使用Action的環境,而又想在執行action以前拿filter作一些事, 用FilterDispatcher是作不到的.! 
那麼StrutsPrepareAndExecuteFilter能夠把他拆分紅StrutsPrepareFilter和StrutsExecuteFilter,能夠在這兩個過濾器之間加上咱們本身的過濾器.! 

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


---------------------------------------------------------------------------------------------------------------------------------我的補充: spa

 使用Context.getContext()時,會有不一樣的效果。 code

    在方法體外,如 htm

public class TestAction extends ActionSupport{
    protected Map request =(Map)ActionContext.getContext().get("request");
    public String execute(){}
}

若是是使用舊版的FilterDispatcher,request將爲null,而用StrutsPrepareAndExecuteFilter,則能夠得到值。 blog

相關文章
相關標籤/搜索