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

正文內(nèi)容

struts2的工作機(jī)制原理分析及實(shí)例(更新版)

2025-08-07 10:30上一頁面

下一頁面
  

【正文】 lue stack, then create a new copy and pass it in to be used by the new Action ActionMapping mapping) throws ServletException { 它持有Action實(shí)例和所有的Interceptor 我們說Action的調(diào)用是通過ActionProxy實(shí)現(xiàn)的,()方法,()方法。 return null。 //獲取Action中定義的execute()方法名稱,實(shí)際上該方法是可以隨便定義的調(diào)用過程是:DefaultActionInvocation()init()createAction()。代碼清單19:public class CustomIntercepter extends AbstractInterceptor { 其中,遞歸調(diào)用截?cái)r器的代碼如清單17所示:代碼清單17:調(diào)用截?cái)r器,()方法的部分代碼 活動(dòng)圖如圖19所示:(圖19) } addAction(actionElement, newPackage)。 i ()。 // get actions loadGlobalExceptionMappings(newPackage, packageElement)。代碼清單16:()方法 ()方法中,先加載Struts2的配置文件,如果沒有人為配置,、。 (timerKey)。 return。 String name = (/struts.length())。 mapping = (request, ())。代碼清單15:()方法 如果用戶請(qǐng)求的資源不是以/struts開頭——,則通過過濾器鏈繼續(xù)往下傳送,直到到達(dá)請(qǐng)求的資源為止。 ()。//讀取內(nèi)容類型//讀取請(qǐng)求文件流 for (String pathPrefix : pathPrefixes) {其內(nèi)容為“中華人民共和國”,訪問://localhost:8081/Struts2Demo/struts/:(圖17)查找靜態(tài)資源的源代碼如清單14: /initparam paramnamepackages/paramname /filterclass filterclass 如果getMapping()方法返回ActionMapping對(duì)象為null,則FilterDispatcher認(rèn)為用戶請(qǐng)求不是Action,自然另當(dāng)別論,F(xiàn)ilterDispatcher會(huì)做一件非常有意思的事:如果請(qǐng)求以/struts開頭,就像下面這樣(注意粗斜體部分): (圖16)//提取右邊的method//提取左邊為name if (exclamation != 1) { String name = ()。//刪除擴(kuò)展名,默認(rèn)擴(kuò)展名為action,在代碼中的定義是List extensions = new ArrayList() {{ add(action)。下面是ActionMapping接口的實(shí)現(xiàn)類DefaultActionMapper的getMapping()方法的源代碼: } catch (IOException e) { request = (request, getServletContext())。包裝請(qǐng)求對(duì)象如代碼清單11所示: 代碼清單10:()方法代碼清單9:()方法} */ /** urlpattern/*/urlpattern filternamestruts2/filtername注:以上步驟參考至網(wǎng)上,具體網(wǎng)址已忘記。 從圖15可以看出,一個(gè)請(qǐng)求在Struts2框架中的處理大概分為以下幾個(gè)步驟: Struts2的工作機(jī)制 Struts2體系結(jié)構(gòu)圖提供freemarker、jsp、velocity等不同類型的頁面呈現(xiàn)。另外,Struts2可視化視圖組件開始支持主題(theme),缺省情況下,使用自帶的缺省主題,如果要自定義頁面效果,需要將組件的theme屬性設(shè)置為simple。,里面的目錄和文件非常多,\\src\core\src\main\java目錄下查看Struts2的源文件,如圖14所示。從源代碼中發(fā)現(xiàn),基本上每一個(gè)Struts2類都訪問了WebWork提供的功能,從而也可以看出Struts2與WebWork千絲萬縷的聯(lián)系。Struts2的核心包,最重要的類都放在該包中。類名說明. Dispatcher 執(zhí)行Action 生產(chǎn)ActionProxy的工廠。. XmlConfigurationProvider三、一旦Action執(zhí)行完畢。 /filtermapping代碼清單7:FilterDispatcher結(jié)構(gòu)public class FilterDispatcher implements StrutsStatics, Filter { public static final String SERVLET_CONTEXT = 。 * Constant for the JSP page context}. public void init(FilterConfig filterConfig) throws ServletException { protected Dispatcher createDispatcher(FilterConfig filterConfig) { ()。 String value = (name)。 String message = Could not wrap servlet request with MultipartRequestWrapper!。throw new ServletException(message, e)。 }} //下面處理形如testAction!method格式的請(qǐng)求路徑 } /filter if (!(.class)) {//忽略class文件 if (contentType != null) {//重新設(shè)置內(nèi)容類型 public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {amp。 if (serveStatic amp。 } finally { } protected PackageConfig addPackage(Element packageElement) throws ConfigurationException { loadDefaultInterceptorRef(newPackage, packageElement)。 // load the default class ref for this package 配置信息加載完成后,創(chuàng)建一個(gè)Action的代理對(duì)象——ActionProxy引用,實(shí)際上對(duì)Action的調(diào)用正是通過ActionProxy實(shí)現(xiàn)的,而ActionProxy又由ActionProxyFactory創(chuàng)建,ActionProxyFactory是創(chuàng)建ActionProxy的工廠。 Override Action創(chuàng)建好后,輪到invokeAction()大顯身手了,該方法比較長,但關(guān)鍵語句實(shí)在很少,用心點(diǎn)看不會(huì)很難。try { method = getAction().getClass().getMethod(altMethodName, new Class[0])。 } catch (NoSuchMethodException e1) { if (methodResult instanceof Result) { 剛才使用了一段插述,我們繼續(xù)回到ActionProxy類。 public void serviceAction(HttpServletRequest request, HttpServletResponse response, ServletContext context, } sendError(request, response, context, , e)。 } catch (Exception e) {Struts2+xwork一共有700余類,除了為讀者做到現(xiàn)在的這些,已無法再做更多的事情。lib 目錄:存放所有jar文件。這也是我們要配置的主要文件。找到key,先取消Content Assist命令的綁定,再用“alt+/”來綁定。 } }}說明:實(shí)現(xiàn)了Action接口,主要是為了保證execute的正確定義,其實(shí)我們也可以不實(shí)現(xiàn)此接口,只要能保證execute方法書寫的正確書寫(方法名,返回值)。內(nèi)容如下:?xml version= encoding=UTF8?webapp id=WebApp_9 version= xmlns= xmlns:xsi= xsi:schemaLocation=:// filter filternamestruts2/filtername ! filterclass/filterclass filterclass /filterclass /filter filtermapping filternamestruts2/filtername urlpattern/*/urlpattern /filtermapping/webapp說明:。解決此bug的方法是配置一個(gè)filter,并在doFilter方法中增加如下代碼:(“UTF8”)。(不建議采用)Copy上面的myStruts2Vo項(xiàng)目,改名為myStruts2Model項(xiàng)目。 } } public User getModel() { return user。二、在struts2中一些配置(比如常量)(只讀性),(只讀性),它們的優(yōu)先級(jí)逐步升高,即是說后面的配置會(huì)覆蓋掉前面相同的配置。比如:package name=tt3 extends=strutsdefault action name=test3/test3 class= result name=success/forward//result /action/package然后輸入a href=%=path%/test3/test3/abr鏈接地址就可以訪問了強(qiáng)調(diào):namespace默認(rèn)值“”,即不配置namespace屬性。而有了namespace可以在項(xiàng)目開發(fā)時(shí)由項(xiàng)目經(jīng)理給每一個(gè)人分不同的namespace,這樣每個(gè)開發(fā)人員只需要保證自己所寫的action不同名即可。接上例:namespce的作用除了在前面提到的避免協(xié)同開發(fā)名字沖突外,還為認(rèn)證提供一個(gè)條件。Struts2框架的大部分核心功能都是通過攔截器來實(shí)現(xiàn)的,如防止重復(fù)提交、類型轉(zhuǎn)換、對(duì)象封裝、校驗(yàn)、文件上傳、頁面預(yù)裝載等等,都是在攔截器的幫助下實(shí)現(xiàn)的。,在struts2中實(shí)現(xiàn)action的統(tǒng)一操作也很簡單。 }}步驟二、配置此Action,為了清晰明了,專為此Action,主要內(nèi)容如下:struts package name=crud extends=strutsdefault namespace=/crud action name=add class= method=add result name=success/crud//result /action action name=del
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1