在pe框架簡介3--MainServlet中传藏,我們已經(jīng)通過MainServlet調(diào)起了mainController.process();
下面我們來分析下mainController.process()的源碼腻暮,其中的關(guān)鍵步驟如下圖:
1、var4 = ((ExtendedContextResolver)this.char).resolveContext(var1, var2, var3,this.void,this.else);
其中毯侦,this.char :
1哭靖、private ContextResolver char = new DefaultExtendedContextResolver();(默認值)
2、CEBClientWAPContextResolver (根據(jù)如下配置可知侈离,程序中用的是這個)
我們找到resolveContext ()方法试幽,關(guān)鍵代碼:
LocalServletContext var10= new LocalServletContext(var7, var1, var3, var5, var2);
進入構(gòu)造方法:this.Inner(var1, var3);
關(guān)鍵操作:setUser()、setDataMap()卦碾、setData()------------注:此處是否在為context賦值留口子铺坞?起宽?
可知,該方法是在為context賦值济榨,var4? 為context坯沪。
另外,通過log.debug打印日志:Transaction Id: prelogin appended map: {} 可以看出 var7=prelogin? var6 為空
2擒滑、this.goto.execute(var4);? 將LocalServletContext?類型 的var4傳入goto.execute ()中腐晾,
其中 : 通過 public void setCoreController(CoreController var1) { this.goto = var1;}
<bean id="mainController" class="com.csii.pe.channel.http.servlet.MainController" >?
? ? ? ? ? ? <param name="loginView">login</param>? ? ? ? ?
coreController
? ? ? ? ? ? <ref name="constantsMap">constantsMap</ref></bean>
可知:this.goto 為coreController?,也就是說調(diào)用coreController .execute ()橘忱。
coreController對應實現(xiàn)類<coreController id="coreController" class="com.csii.pe.core.CoreControllerImpl" />,
對coreController的具體分析詳見?pe框架簡介5--CoreController赴魁。
3、String var6 =this.resolveViewName(var4);? 所有的action執(zhí)行完后钝诚,開始加載相應的jsp頁面