• <em id="6vhwh"><rt id="6vhwh"></rt></em>

    <style id="6vhwh"></style>

    <style id="6vhwh"></style>
    1. <style id="6vhwh"></style>
        <sub id="6vhwh"><p id="6vhwh"></p></sub>
        <p id="6vhwh"></p>
          1. 国产亚洲欧洲av综合一区二区三区 ,色爱综合另类图片av,亚洲av免费成人在线,久久热在线视频精品视频,成在人线av无码免费,国产精品一区二区久久毛片,亚洲精品成人片在线观看精品字幕 ,久久亚洲精品成人av秋霞

            filterdispatcher

            更新時(shí)間:2023-03-02 11:50:53 閱讀: 評(píng)論:0

            1.

            什么是Struts2?

            Apache Struts2是一個(gè)用Java構(gòu)建Web應(yīng)用程序的開源框架。Struts2基于OpenSymphony WebWork框架。它從Struts1中得到了很大的改進(jìn),使其更加靈活,易于使用和擴(kuò)展。Struts2的核心組件是Action,Interceptors和Result頁面。

            Struts2提供了許多方法來創(chuàng)建Action類并通過struts.xml或注釋來配置它們。我們可以為常見任務(wù)創(chuàng)建自己的攔截器。Struts2附帶了很多標(biāo)簽,并使用OGNL表達(dá)式語言。我們可以創(chuàng)建自己的類型轉(zhuǎn)換器來渲染結(jié)果頁面。結(jié)果頁面可以是JSP和FreeMarker模板。

            2.

            Struts2的核心組件是什么?

            Struts2的核心組件是:

            動(dòng)作類 攔截器 結(jié)果頁面,F(xiàn)reeMarker模板的JSP ValueStack,OGNL和Tag Libraries Struts 2架構(gòu)圖,struts2 ,struts2試題

            3.

            什么是Struts2中的攔截器?

            攔截器是Struts2 Framework的支柱。Struts2攔截器負(fù)責(zé)框架完成的大部分處理,例如將請(qǐng)求參數(shù)傳遞給動(dòng)作類,使Servlet API請(qǐng)求,響應(yīng),會(huì)話可用于Action類,驗(yàn)證,i18n支持等。

            ActionInvocation負(fù)責(zé)封裝Action類和攔截器并按順序觸發(fā)它們。在ActionInvocation中使用的最重要的方法是invoke()方法,它跟蹤攔截器鏈并調(diào)用下一個(gè)攔截器或動(dòng)作。這是Java EE框架中責(zé)任鏈模式的最佳示例之一。

            4.

            Struts2攔截器實(shí)現(xiàn)了哪種設(shè)計(jì)模式?

            Struts2攔截器基于攔截濾波器設(shè)計(jì)模式。攔截器堆棧中攔截器的調(diào)用非常類似于責(zé)任鏈設(shè)計(jì)模式。

            5.

            在Struts2中創(chuàng)建Action類有哪些不同的方法?

            Struts2提供了創(chuàng)建動(dòng)作類的不同方法。

            通過實(shí)現(xiàn)Action接口 使用Struts2 @Action注釋 通過擴(kuò)展ActionSupport類 任何返回String的execute()方法的普通java類都可以配置為Action類。

            6.

            Struts2動(dòng)作和攔截器是否是線程安全的?

            Struts2 Action類是線程安全的,因?yàn)閷?duì)象是為每個(gè)處理它的請(qǐng)求實(shí)例化的。

            Struts2攔截器是單例類,并且創(chuàng)建了一個(gè)新線程來處理請(qǐng)求,因此它不是線程安全的,我們需要仔細(xì)實(shí)現(xiàn)它們以避免共享數(shù)據(jù)的任何問題。

            7.

            哪個(gè)類是Struts2中的前端控制器?

            org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter是Struts2中的Front Controller類,每個(gè)請(qǐng)求處理都從這個(gè)類開始。早期版本的Struts2 org.apache.struts2.dispatcher.FilterDispatcher用作Front Controller類。

            8.

            Struts2中攔截器有哪些好處?

            攔截器的一些好處是:

            攔截器在實(shí)現(xiàn)高度分離關(guān)注方面起著至關(guān)重要的作用。

            Struts2攔截器是可配置的,我們可以為我們想要的任何動(dòng)作配置它。

            我們可以創(chuàng)建自己的自定義攔截器來執(zhí)行一些常見任務(wù),例如請(qǐng)求參數(shù)記錄,身份驗(yàn)證等。這有助于我們?cè)谝粋€(gè)位置處理常見任務(wù),從而降低維護(hù)成本。

            我們可以創(chuàng)建攔截器堆棧以用于不同的操作。

            9.

            什么是ValueStack和OGNL?

            ValueStack是Struts2存儲(chǔ)應(yīng)用程序數(shù)據(jù)以處理客戶端請(qǐng)求的存儲(chǔ)區(qū)域。數(shù)據(jù)存儲(chǔ)在ActionContext使用ThreadLocal的對(duì)象中,以具有特定于特定請(qǐng)求線程的值。

            對(duì)象圖導(dǎo)航語言(OGNL)是一種功能強(qiáng)大的表達(dá)式語言,用于處理存儲(chǔ)在ValueStack上的數(shù)據(jù)。正如您在架構(gòu)圖中看到的,攔截器和結(jié)果頁面都可以使用OGNL訪問存儲(chǔ)在ValueStack上的數(shù)據(jù)。

            10.

            列舉Struts2中引入的一些有用的注釋?

            Struts2中引入的一些重要注釋是:

            @Action創(chuàng)建動(dòng)作類@Actions為多個(gè)動(dòng)作配置單個(gè)類@Namespace和@Namespaces用于創(chuàng)建不同的模塊@Result用于結(jié)果頁面@ResultPath用于配置結(jié)果頁面位置

            11.

            提供一些您使用過的重要Struts2常量?

            struts.devMode在開發(fā)模式下運(yùn)行我們的應(yīng)用程序。此模式會(huì)重新加載屬性文件,并提供額外的日志記錄和調(diào)試功能。它在開發(fā)我們的應(yīng)用程序時(shí)非常有用,但我們應(yīng)該在將代碼轉(zhuǎn)移到生產(chǎn)時(shí)將其關(guān)閉。struts.convention.result.path用于配置結(jié)果頁面的位置。默認(rèn)情況下,Struts2在{WEBAPP-ROOT} / {Namespace} /中查找結(jié)果頁面,我們可以使用此常量更改位置。struts.custom.i18n.resources為i18n支持定義全局資源包。struts.action.extension為Struts2應(yīng)用程序配置URL后綴。默認(rèn)后綴是.action但有時(shí)我們可能想將其更改為.do或其他內(nèi)容。

            我們可以在struts.xml文件中配置上面的常量,如下所示。

            <constant name="struts.devMode" value="true"></constant><constant name="struts.action.extension" value="action,do"></constant><constant name="struts.custom.i18n.resources" value="global"></constant><constant name="struts.convention.result.path" value="/"></constant>

            12.

            Struts2中動(dòng)作映射中命名空間的用途是什么?

            Struts2命名空間配置允許我們輕松創(chuàng)建模塊。我們可以使用命名空間根據(jù)其功能分離我們的操作類,例如admin,ur,customer等。

            13.

            哪個(gè)攔截器負(fù)責(zé)將請(qǐng)求參數(shù)映射到動(dòng)作類Java Bean屬性?

            com.opensymphony.xwork2.interceptor.ParametersInterceptor攔截器負(fù)責(zé)將請(qǐng)求參數(shù)映射到Action類的java bean屬性。此攔截器在struts-default包中配置,名稱為“params”。此攔截器是basicStack和defaultStack攔截器堆棧的一部分。

            14.

            哪個(gè)攔截器負(fù)責(zé)i18n支持?

            com.opensymphony.xwork2.interceptor.I18nInterceptor攔截器負(fù)責(zé)Struts2應(yīng)用程序中的i18n支持。此攔截器在struts-default包中配置,名稱為“i18n”,它是i18nStack和defaultStack的一部分。

            15.

            對(duì)我們的操作類使用Action接口和ActionSupport類有什么區(qū)別,您更喜歡哪一個(gè)?

            我們可以實(shí)現(xiàn)Action接口來創(chuàng)建我們的動(dòng)作類。這個(gè)接口有一個(gè)我們需要實(shí)現(xiàn)的方法execute()。使用此接口的唯一好處是它包含一些我們可以用于結(jié)果頁面的常量,這些常量是SUCCESS,ERROR,NONE,INPUT和LOGIN。

            ActionSupport類是Action接口的默認(rèn)實(shí)現(xiàn),它還實(shí)現(xiàn)了與Validation和i18n支持相關(guān)的接口。ActionSupport類實(shí)現(xiàn)Action,Validateable,ValidationAware,TextProvider和LocaleProvider接口。我們可以覆蓋ActionSupport類的validate()方法,以在我們的操作類中包含字段級(jí)驗(yàn)證登錄。

            根據(jù)需求,我們可以使用任何方法來創(chuàng)建struts 2動(dòng)作類,我最喜歡的是ActionSupport類,因?yàn)樗兄谠趧?dòng)作類中輕松編寫驗(yàn)證和i18n邏輯。

            16.

            我們?cè)鯓硬拍茉趧?dòng)作類中獲得Servlet API請(qǐng)求,響應(yīng),HttpSession等對(duì)象?

            Struts2操作類不提供對(duì)Servlet API組件的直接訪問,例如Request,Respon和Session。但是,有時(shí)我們需要在操作類中進(jìn)行這些訪問,例如檢查HTTP方法或設(shè)置響應(yīng)中的cookie。

            這就是為什么Struts2 API提供了一堆* Aware接口,我們可以實(shí)現(xiàn)這些接口來訪問這些對(duì)象。Struts2 API使用依賴注入在操作類中注入Servlet API組件。一些重要的Aware接口是SessionAware,ApplicationAware,ServletRequestAware和ServletResponAware。

            17.

            execAndWait攔截器有什么用?

            Struts2為長時(shí)間運(yùn)行的動(dòng)作類提供了execAndWait攔截器。我們可以使用此攔截器將中間響應(yīng)頁面返回給客戶端,一旦處理完成,最終響應(yīng)將返回給客戶端。此攔截器在struts-default包中定義,實(shí)現(xiàn)在ExecuteAndWaitInterceptor類中。

            18.

            Struts2中令牌攔截器的用途是什么?

            Web應(yīng)用程序的主要問題之一是雙表單提交。如果不注意,雙重表單提交可能會(huì)導(dǎo)致向客戶收取雙倍金額或兩次更新數(shù)據(jù)庫值。我們可以使用令牌攔截器來解決雙表格提交問題。這個(gè)攔截器是在struts-default包中定義的,但它不是任何攔截器堆棧的一部分,所以我們需要在我們的動(dòng)作類中手動(dòng)包含它。

            19.

            我們?nèi)绾卧赟truts2應(yīng)用程序中集成log4j?

            Struts2提供了log4j API的簡單集成以便進(jìn)行日志記錄,我們需要的只是WEB-INF / class目錄中的log4j配置文件。

            20.

            什么是不同的Struts2標(biāo)簽?我們?cè)鯓硬拍苁褂盟鼈儯?/p>

            Struts2提供了許多自定義標(biāo)記,我們可以在結(jié)果頁面中使用它們來創(chuàng)建客戶端請(qǐng)求的視圖。這些標(biāo)簽大致分為三類 - 數(shù)據(jù)標(biāo)簽,控制標(biāo)簽和UI標(biāo)簽。

            我們可以通過使用taglib指令在JSP頁面中添加這些標(biāo)記來使用這些標(biāo)記。

            <%@ taglib uri="/struts-tags" prefix="s" %>

            一些重要的Data標(biāo)簽是property,t,push,bean,action,include,i18n和text標(biāo)簽。

            控制標(biāo)簽用于處理和導(dǎo)航集合中的數(shù)據(jù)。一些重要的Control標(biāo)簽是if-elif-el,iterator,append,merge,sort,subt和generator標(biāo)簽。

            Struts2 UI標(biāo)簽用于生成HTML標(biāo)記語言,將HTML表單數(shù)據(jù)綁定到動(dòng)作類屬性,類型轉(zhuǎn)換,驗(yàn)證和i18n支持。一些重要的UI標(biāo)簽是form,textfield,password,textarea,checkbox,lect,radio和submit標(biāo)簽。

            21.

            什么是Struts2中的自定義類型轉(zhuǎn)換器?

            Struts2支持OGNL表達(dá)式語言,它在Struts 2中執(zhí)行兩項(xiàng)重要任務(wù) - 數(shù)據(jù)傳輸和類型轉(zhuǎn)換。

            OGNL非常靈活,我們可以輕松擴(kuò)展它以創(chuàng)建我們自己的自定義轉(zhuǎn)換器類。創(chuàng)建和配置自定義類型轉(zhuǎn)換器類非常簡單,第一步是修復(fù)自定義類的輸入格式。第二步是實(shí)現(xiàn)轉(zhuǎn)換器類。類型轉(zhuǎn)換器類應(yīng)該實(shí)現(xiàn)com.opensymphony.xwork2.conversion.TypeConverter接口。由于在Web應(yīng)用程序中,我們總是以String的形式獲取請(qǐng)求并以String的形式發(fā)送響應(yīng),Struts 2 API提供了TypeConverter接口的默認(rèn)實(shí)現(xiàn),即StrutsTypeConverter。StrutsTypeConverter包含兩個(gè)抽象方法 - convertFromString將String轉(zhuǎn)換為Object,convertToString將Object轉(zhuǎn)換為String。

            22.

            我們?nèi)绾尉帉懽约旱臄r截器并將其映射為動(dòng)作?

            我們可以實(shí)現(xiàn)com.opensymphony.xwork2.interceptor.Interceptor接口來創(chuàng)建自己的攔截器。一旦攔截器類準(zhǔn)備就緒,我們需要在我們想要使用它的struts.xml包中定義它。我們還可以使用自定義攔截器和defaultStack攔截器創(chuàng)建攔截器堆棧。之后我們可以為我們想要使用攔截器的動(dòng)作類配置它。

            23.

            什么是攔截器的生命周期?

            攔截器接口定義了三個(gè)方法 - init(),destroy()和intercept()。init和destroy是攔截器的生命周期方法。攔截器是Singleton類,Struts2初始化一個(gè)新線程來處理每個(gè)請(qǐng)求。創(chuàng)建攔截器實(shí)例時(shí)調(diào)用init()方法,我們可以初始化此方法中的任何資源。應(yīng)用程序關(guān)閉時(shí)調(diào)用destroy()方法,我們可以釋放此方法中的任何資源。

            intercept()是每次客戶端請(qǐng)求通過攔截器時(shí)調(diào)用的方法。

            24.

            什么是攔截器堆棧?

            攔截器堆棧可幫助我們將多個(gè)攔截器組合在一起以供進(jìn)一步使用。struts-default包創(chuàng)建了一些最常用的攔截器堆棧--basicStack和defaultStack。我們可以在包的開頭創(chuàng)建我們自己的攔截器堆棧,然后配置我們的動(dòng)作類來使用它。

            25.

            什么是struts-default包,它有什么好處?

            struts-default是一個(gè)抽象包,它定義了所有Struts2攔截器和常用的攔截器堆棧。建議在配置應(yīng)用程序包時(shí)擴(kuò)展此程序包,以避免再次配置攔截器。這是為了幫助開發(fā)人員消除在我們的應(yīng)用程序中配置攔截器和結(jié)果頁面的繁瑣任務(wù)。

            26.

            Struts2操作URI的默認(rèn)后綴是什么?我們?nèi)绾胃乃?/p>

            Struts2操作的默認(rèn)URI后綴是.action,在Struts1中,默認(rèn)后綴為.do。我們可以通過在Struts2配置文件中定義struts.action.extension常量值來更改此后綴:

            <constant name="struts.action.extension" value="action,do"></constant>

            27.

            結(jié)果頁面的默認(rèn)位置是什么?我們?nèi)绾胃乃?/p>

            默認(rèn)情況下,Struts2在{WEBAPP-ROOT} / {Namespace} /目錄中查找結(jié)果頁面,但有時(shí)我們希望將結(jié)果頁面保存在另一個(gè)位置,我們可以在Struts2配置文件中提供struts.convention.result.path常量值來更改結(jié)果頁面位置。

            另一種方法是在操作類中使用@ResultPath批注來提供結(jié)果頁面位置。

            28.

            我們?nèi)绾卧赟truts2應(yīng)用程序中上傳文件?

            文件上載是Web應(yīng)用程序中的常見任務(wù)之一。這就是為什么Struts2通過FileUploadInterceptor提供對(duì)文件上傳的內(nèi)置支持。此攔截器在struts-default包中配置,并提供選項(xiàng)以設(shè)置文件的最大大小和可以上載到服務(wù)器的文件類型。

            29.

            開發(fā)Struts2應(yīng)用程序時(shí)要遵循哪些最佳實(shí)踐?

            開發(fā)Struts2應(yīng)用程序時(shí)的一些最佳實(shí)踐是:

            在創(chuàng)建程序包時(shí)始終嘗試擴(kuò)展struts-default程序包,以避免在配置攔截器時(shí)出現(xiàn)代碼冗余。對(duì)于整個(gè)應(yīng)用程序中的常見任務(wù),例如記錄請(qǐng)求參數(shù),請(qǐng)嘗試使用攔截器。始終將動(dòng)作類java bean屬性保存在單獨(dú)的bean中以便重用代碼并實(shí)現(xiàn)ModelDriven接口。如果您有將在多個(gè)操作中使用的自定義攔截器,請(qǐng)為此創(chuàng)建攔截器堆棧,然后使用它。嘗試使用基于功能區(qū)域的命名空間配置在不同模塊中劃分應(yīng)用程序。嘗試在結(jié)果頁面中使用Struts2標(biāo)記進(jìn)行代碼說明,如果需要,可以創(chuàng)建自己的類型轉(zhuǎn)換器。使用開發(fā)模式可以加快開發(fā)速度,但請(qǐng)確保生產(chǎn)代碼不以dev模式運(yùn)行。使用Struts2 i18n支持資源包并支持本地化。Struts2提供了許多可以擁有資源包的地方,但是嘗試保留一個(gè)全局資源包,一個(gè)用于動(dòng)作類以避免混淆。struts-default包配置所有攔截器并創(chuàng)建不同的攔截器堆棧。嘗試僅使用所需的內(nèi)容,例如,如果您沒有本地化要求,則可以避免使用i18n攔截器。

            30.

            如何處理Struts2中應(yīng)用程序拋出的異常?

            Struts2為異常處理提供了一個(gè)非常強(qiáng)大的框架。我們可以在包中指定全局結(jié)果,然后將特定的例外映射到這些結(jié)果頁面。異常映射可以在全局包級(jí)別和操作級(jí)別完成。

            當(dāng)發(fā)生一些未由應(yīng)用程序處理的意外異常時(shí),讓異常結(jié)果頁面向用戶提供一些信息是個(gè)好主意。struts.xml文件中的示例配置如下所示。

            <package name="ur" namespace="/" extends="struts-default"><global-results> <result name="exception">/exception.jsp</result> <result name="runtime_exception">/runtime_exception.jsp</result> <result name="error">/error.jsp</result></global-results><global-exception-mappings> <exception-mapping exception="java.lang.Exception" result="exception"></exception-mapping> <exception-mapping exception="java.lang.Error" result="error"></exception-mapping> <exception-mapping exception="java.lang.RuntimeException" result="runtime_exception"></exception-mapping></global-exception-mappings> <action name="myaction" class="com.journaldev.struts2.exception.MyAction"> </action> <action name="myspecialaction" class="com.journaldev.struts2.exception.MySpecialAction"> <exception-mapping exception="java.io.IOException" result="login"></exception-mapping> <result name="login">/error.jsp</result> </action></package>

            最后,我自己是一名從事了多年開發(fā)的Java老程序員,辭職目前在做自己的Java私人定制課程,今年年初我花了一個(gè)月整理了一份最適合2019年學(xué)習(xí)的Java學(xué)習(xí)干貨,可以送給每一位喜歡Java的小伙伴,想要獲取的可以關(guān)注我的頭條號(hào)并在后臺(tái)私信我:01,即可免費(fèi)獲取。

            本文發(fā)布于:2023-02-28 21:08:00,感謝您對(duì)本站的認(rèn)可!

            本文鏈接:http://m.newhan.cn/zhishi/a/1677729053104429.html

            版權(quán)聲明:本站內(nèi)容均來自互聯(lián)網(wǎng),僅供演示用,請(qǐng)勿用于商業(yè)和其他非法用途。如果侵犯了您的權(quán)益請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)刪除。

            本文word下載地址:filterdispatcher.doc

            本文 PDF 下載地址:filterdispatcher.pdf

            標(biāo)簽:filterdispatcher
            相關(guān)文章
            留言與評(píng)論(共有 0 條評(píng)論)
               
            驗(yàn)證碼:
            推薦文章
            排行榜
            Copyright ?2019-2022 Comsenz Inc.Powered by ? 實(shí)用文體寫作網(wǎng)旗下知識(shí)大全大全欄目是一個(gè)全百科類寶庫! 優(yōu)秀范文|法律文書|專利查詢|
            主站蜘蛛池模板: 国产成人一区二区免av| 一区二区不卡99精品日韩| 亚洲综合色婷婷中文字幕| 国产精品午夜av福利| 亚洲人成色99999在线观看| 在线a亚洲老鸭窝天堂| 免费无码高潮流白浆视频| 四虎永久免费影库二三区| 国产精品久久精品| 人人妻人人狠人人爽| 中国熟妇毛多多裸交视频| 宅男午夜网站在线观看| 无码免费大香伊蕉在人线国产| 国产在线精品欧美日韩电影| 青青草无码免费一二三区| 99这里有精品视频视频| 国产精品国产精品国产专区 | 国产精品一久久香蕉产线看| 久久不见久久见免费影院| 无码抽搐高潮喷水流白浆| 婷婷综合缴情亚洲五月伊| 亚洲精品国男人在线视频| 无码人妻精品中文字幕免费东京热 | 高清不卡一区二区三区| 日本三级成人中文字幕乱码| bt天堂新版中文在线| 无码av免费永久免费永久专区| 国产亚洲精品第一综合另类| 中文乱码字幕无线观看2019| 国产成人精品一区二区三区| 亚洲日本一区二区一本一道| 国产成人精品一区二区三| 国精品91人妻无码一区二区三区| 国产日韩AV免费无码一区二区三区 | 亚洲qingse中文字幕久久| 五月天天天综合精品无码| 一本色道久久88亚洲综合| 毛片久久网站小视频| 99久久无色码中文字幕| 国产人成激情视频在线观看| 国产明星精品无码AV换脸|