freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

struts2的工作機(jī)制原理分析及實(shí)例-展示頁

2025-07-08 10:30本頁面
  

【正文】 ages)。 ()。 dispatcher = createDispatcher(filterConfig)。 代碼清單9:()方法然后得到參數(shù)packages,值得注意的是,還有另外三個固定的包和該參數(shù)進(jìn)行拼接,、template、中間用空格隔開,經(jīng)過解析將包名變成路徑后存儲到一個名叫pathPrefixes的數(shù)組中,這些目錄中的文件會被自動搜尋。 容器啟動后,F(xiàn)ilterDispatcher被實(shí)例化,調(diào)用init(FilterConfig filterConfig)方法。} /** Constant for the PortletContext object */ */ * Constant for the servlet context} object. /** public static final String SERVLET_DISPATCHER = 。 */ * Constant for the HTTP response object. /** */ * Constant for the HTTP request object. /** 以下是StrutsStatics的定義:}StrutsStatics并沒有定義業(yè)務(wù)方法,只定義了若干個常量。 實(shí)際上,F(xiàn)ilterDispatcher除了實(shí)現(xiàn)Filter接口以外,還實(shí)現(xiàn)了StrutsStatics接口,繼承代碼如下: Struts2建議,在對Struts2的配置尚不熟悉的情況下,將urlpattern配置為/*,這樣該過濾器將截?cái)r所有請求。 urlpattern/*/urlpattern filternamestruts2/filtername filtermapping /filterclass filterclass filternamestruts2/filtername filter:注:以上步驟參考至網(wǎng)上,具體網(wǎng)址已忘記。在這個過程中需要涉及到ActionMapper。返回結(jié)果通常是(但不總是,也可能是另外的一個Action鏈)一個需要被表示的JSP或者FreeMarker的模版。ActionInvocation實(shí)例使用命名模式來調(diào)用,在調(diào)用Action的過程前后,涉及到相關(guān)攔截器(Intercepter)的調(diào)用。 從圖15可以看出,一個請求在Struts2框架中的處理大概分為以下幾個步驟:  Struts2的工作機(jī)制 (圖15) Strut2的體系結(jié)構(gòu)如圖15所示: Struts2的工作機(jī)制 Struts2體系結(jié)構(gòu)圖 負(fù)責(zé)調(diào)用Action和截?cái)r器。 Action的代理接口。. ActionProxy 這是一個過濾器。. FilterDispatcher下表是對一些重要類的說明:提供freemarker、jsp、velocity等不同類型的頁面呈現(xiàn)。實(shí)用包。該包只定義了3個類,他們是StrutsActionProxy、StrutsActionProxyFactory、StrutsObjectFactory,這三個類都是對xwork的擴(kuò)展。實(shí)際上,工程中的xml和properties文件的讀取和解析都是由WebWork完成的,Struts只做了少量的工作。另外,Struts2可視化視圖組件開始支持主題(theme),缺省情況下,使用自帶的缺省主題,如果要自定義頁面效果,需要將組件的theme屬性設(shè)置為simple。以下是對各包的簡要說明:包名說明. ponents該包封裝視圖組件,Struts2在視圖組件上有了很大加強(qiáng),不僅增加了組件的屬性個數(shù),更新增了幾個非常有用的組件,如updownselect、doubleselect、datetimepicker、token、tree等。但無論如何,Struts2的核心功能比如將請求委托給哪個Action處理都是由xwork完成的,Struts2只是在WebWork的基礎(chǔ)上做了適當(dāng)?shù)暮喕⒓訌?qiáng)和封裝。 主要的包和類Struts2框架的正常運(yùn)行,除了占核心地位的xwork的支持以外,Struts2本身也提供了許多類,這些類被分門別類組織到不同的包中。(圖14),那么千萬不要想當(dāng)然地以為這一章可以跳過。Struts2的工作機(jī)制分析及實(shí)例一、概述本章講述Struts2的工作原理。但因?yàn)镾truts2的核心設(shè)計(jì)完全改變,從思想到設(shè)計(jì)到工作流程,都有了很大的不同。Struts2是Struts社區(qū)和WebWork社區(qū)的共同成果,我們甚至可以說,Struts2是WebWork的升級版,他采用的正是WebWork的核心,所以,Struts2并不是一個不成熟的產(chǎn)品,相反,構(gòu)建在WebWork基礎(chǔ)之上的Struts2是一個運(yùn)行穩(wěn)定、性能優(yōu)異、設(shè)計(jì)成熟的WEB框架。本章主要對Struts的源代碼進(jìn)行分析,因?yàn)镾truts2與WebWork的關(guān)系如此密不可分,因此,讀者需要下載xwork的源代碼,訪問。,里面的目錄和文件非常多,\\src\core\src\main\java目錄下查看Struts2的源文件,如圖14所示。二、從源代碼中發(fā)現(xiàn),基本上每一個Struts2類都訪問了WebWork提供的功能,從而也可以看出Struts2與WebWork千絲萬縷的聯(lián)系。. config該包定義與配置相關(guān)的接口和類。Struts2的核心包,最重要的類都放在該包中。定義內(nèi)置的截?cái)r器。只定義了一個類:DWRValidator。類名說明. Dispatcher 該類有兩個作用: 初始化 調(diào)用指定的Action的execute()方法。文檔中已明確說明,如果沒有經(jīng)驗(yàn),配置時請將urlpattern的值設(shè)成/*。 該類有四個作用: 執(zhí)行Action 清理ActionContext,避免內(nèi)存泄漏 處理靜態(tài)內(nèi)容(Serving static content) 為請求啟動xwork’s的截?cái)r器鏈。. ctionProxyFactory 生產(chǎn)ActionProxy的工廠。. XmlConfigurationProvider 負(fù)責(zé)Struts2的配置文件的解析。三、客戶端初始化一個指向Servlet容器(例如Tomcat)的請求;這個請求經(jīng)過一系列的過濾器(Filter)(這些過濾器中有一個叫做ActionContextCleanUp的可選過濾器,這個過濾器對于Struts2和其他框架的集成很有幫助,例如:SiteMesh Plugin);接著FilterDispatcher被調(diào)用,F(xiàn)ilterDispatcher詢問ActionMapper來決定這個請求是否需要調(diào)用某個Action;如果ActionMapper決定需要調(diào)用某個Action,F(xiàn)ilterDispatcher把請求的處理交給ActionProxy;ActionProxy通過Configuration Manager詢問框架的配置文件,找到需要調(diào)用的Action類;ActionProxy創(chuàng)建一個ActionInvocation的實(shí)例。一旦Action執(zhí)行完畢。在表示的過程中可以使用Struts2 框架中繼承的標(biāo)簽。在此表示感謝! Struts2源代碼分析 ,Struts2的啟動是通過FilterDispatcher過濾器實(shí)現(xiàn)的。代碼清單6:(截?。?/filter /filtermapping代碼清單7:FilterDispatcher結(jié)構(gòu)public class FilterDispatcher implements StrutsStatics, Filter {Struts2對常用的接口進(jìn)行了重新封裝,比如HttpServletRequest、HttpServletResponse、HttpServletContext等。代碼清單8:public interface StrutsStatics { public static final String HTTP_REQUEST = 。 public static final String HTTP_RESPONSE = 。 /** * Constant for an HTTP request dispatcher}. */ public static final String SERVLET_CONTEXT = 。 /** * Constant for the JSP page context}. */public static final String PAGE_CONTEXT = 。 public static final String STRUTS_PORTLET_CONTEXT = 。該方法創(chuàng)建Dispatcher類的對象,并且將FilterDispatcher配置的初始化參數(shù)傳到對象中(詳情請參考代碼清單10),并負(fù)責(zé)Action的執(zhí)行。 public void init(FilterConfig filterConfig) throws ServletException { = filterConfig。 packages = param + + packages。 }} protected Dispatcher createDispatcher(FilterConfig filterConfig) { ()。 String name = (String) ()。 String value = (name)。 (name, value)。 }首先,Struts2對請求對象進(jìn)行重新包裝,此次包裝根據(jù)請求內(nèi)容的類型不同,返回不同的對象,如果為multipart/formdata類型,則返回MultiPartRequestWrapper類型的對象,該對象服務(wù)于文件上傳,否則返回StrutsRequestWrapper類型的對象,MultiPartRequestWrapper是StrutsRequestWrapper的子類,而這兩個類都是HttpServletRequest接口的實(shí)現(xiàn)。代碼清單11:()方法protected HttpServletRequest prepareDispatcherAndWrapRequest( HttpServletRequest request, HttpServletResponse response) throws ServletException { (dispatcher)。 dispatcher = du。 }try { String message = Could not wrap servlet request with MultipartRequestWrapper!。 (message, e)。throw new ServletException(message, e)。 }} request對象重新包裝后,通過ActionMapper的getMapping()方法得到請求的Action,Action的配置信息存儲在ActionMapping對象中,該語句如下:mapping = (request, ())。代碼清單12:()方法 ConfigurationManager configManager) {//得到請求路徑的URI,如:!method uri = dropExtension(uri)。}}。 if (uri == null) { //從uri變量中解析出Action的name和namespace handleSpecialParameters(request, mapping)。 //如果Action的name沒有解析出來,直接返回 return null
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1