上一章筆者講到關(guān)于struts2過(guò)濾器(Filter)的知識(shí)。讓我們了解到StrutsPrepareFilter和StrutsExecuteFilter的作用。特別是StrutsPrepareFilter做了重要的講解。從其中我們了解到Dispatcher類的重要性。而本章就是專對(duì)Dispatcher類的工作進(jìn)行講解。從前面章節(jié)的機(jī)制圖片中我們橙黃色區(qū)里面看到FilterDispatcher。在筆者理解這里的FilterDispatcher相當(dāng)于Dispatcher類的工作。那么到底Dispatcher類做了哪一些的工作呢?本章就是筆者就會(huì)詳細(xì)的進(jìn)行講解。那么在講解之前筆者還是有想把一些必要的知識(shí)說(shuō)一下。從上一章中我們可以明白StrutsPrepareFilter類的主要工作有倆點(diǎn):一是為struts2執(zhí)行做一些相關(guān)的準(zhǔn)備。如加載相關(guān)的配置信息。二是為struts2的request請(qǐng)求處理相關(guān)的信息。如設(shè)置編碼格式和找到對(duì)應(yīng)的action映射類。而這二點(diǎn)都離不開Dispatcher類的作用。甚至可以講大部分都要靠Dispatcher類來(lái)完成。筆者很想把Dispatcher類的源碼全部都POST上來(lái)。可是想到這樣子讀起來(lái)有一點(diǎn)吃力。所以筆者打算將來(lái)部分部分的POST上來(lái)進(jìn)行講解。
調(diào)結(jié)者的準(zhǔn)備工作 |
在執(zhí)行struts2之前必然要加載一些相關(guān)信息。如配置文件struts.xml之類。沒有錯(cuò)。StrutsPrepareFilter就是通過(guò)Dispatcher類來(lái)完成這一系列的工作的(下面代碼的紅色部分)。讓我們看一下Dispatcher類的代碼就是能夠明白。如下
StrutsPrepareFilte類:
1 public void init(FilterConfig filterConfig) throws ServletException { 2 InitOper