日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

struts2面试问题_Struts2面试问答

發(fā)布時(shí)間:2023/12/3 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 struts2面试问题_Struts2面试问答 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

struts2面試問(wèn)題

Struts2是用Java開(kāi)發(fā)Web應(yīng)用程序的著名框架之一。 最近,我寫(xiě)了很多Struts2教程 ,在這篇文章中,我列出了一些重要的Struts2面試問(wèn)題以及答案,以幫助您進(jìn)行面試。

  • 什么是Struts2?
  • Struts1和Struts2之間有什么區(qū)別,或者Struts2比Struts1更好?
  • 什么是Struts2核心組件?
  • Struts2中的攔截器是什么?
  • Struts2攔截器實(shí)現(xiàn)哪種設(shè)計(jì)模式?
  • 在Struts2中創(chuàng)建Action類(lèi)的不同方式有哪些?
  • Struts2動(dòng)作和攔截器是否是線程安全的?
  • Struts2中的Front Controller是哪個(gè)類(lèi)?
  • Struts2中的Interceptor有什么好處?
  • 什么是ValueStack和OGNL?
  • 命名一些在Struts2中引入的有用注釋?
  • 提供一些重要的Struts2常量?
  • Struts2中的動(dòng)作映射中名稱(chēng)空間的用途是什么?
  • 哪個(gè)攔截器負(fù)責(zé)將請(qǐng)求參數(shù)映射到動(dòng)作類(lèi)Java Bean屬性?
  • 哪個(gè)攔截器負(fù)責(zé)i18n支持?
  • 將Action接口和ActionSupport類(lèi)用于我們的操作類(lèi)有什么區(qū)別,您希望使用哪種?
  • 我們?nèi)绾卧趧?dòng)作類(lèi)中獲取Servlet API請(qǐng)求,響應(yīng),HttpSession等對(duì)象?
  • execAndWait攔截器有什么用?
  • Struts2中的令牌攔截器有什么用?
  • 我們?nèi)绾螌og4j集成到Struts2應(yīng)用程序中?
  • 有什么不同的Struts2標(biāo)簽? 我們?nèi)绾问褂盟鼈?#xff1f;
  • Struts2中的自定義類(lèi)型轉(zhuǎn)換器是什么?
  • 我們?nèi)绾尉帉?xiě)自己的攔截器并將其映射為行動(dòng)?
  • 攔截器的生命周期是多少?
  • 什么是攔截器堆棧?
  • 什么是struts-default軟件包,它有什么好處?
  • Struts2操作URI的默認(rèn)后綴是什么,我們?nèi)绾胃乃?#xff1f;
  • 結(jié)果頁(yè)的默認(rèn)位置是什么,我們?nèi)绾胃乃?#xff1f;
  • 我們?nèi)绾卧赟truts2應(yīng)用程序中上傳文件?
  • 開(kāi)發(fā)Struts2應(yīng)用程序時(shí)應(yīng)遵循的最佳實(shí)踐是什么?
  • 什么是Struts2?

    Apache Struts2是一個(gè)開(kāi)放源代碼框架,可以用Java構(gòu)建Web應(yīng)用程序。 Struts2基于OpenSymphony WebWork框架。 它比Struts1有了很大的改進(jìn),使其更加靈活,易于使用和擴(kuò)展。 Struts2的核心組件是“操作”,“攔截器”和“結(jié)果”頁(yè)面。

    Struts2提供了許多方法來(lái)創(chuàng)建Action類(lèi)并通過(guò)struts.xml或通過(guò)注釋對(duì)其進(jìn)行配置。 我們可以為常見(jiàn)任務(wù)創(chuàng)建自己的攔截器。 Struts2帶有很多標(biāo)簽,并使用OGNL表達(dá)式語(yǔ)言。 我們可以創(chuàng)建自己的類(lèi)型轉(zhuǎn)換器來(lái)呈現(xiàn)結(jié)果頁(yè)面。 結(jié)果頁(yè)面可以是JSP和FreeMarker模板。

  • Struts1和Struts2之間有什么區(qū)別,或者Struts2比Struts1更好?

    Struts2旨在克服Struts1的缺點(diǎn),并使其更加靈活,可擴(kuò)展。 一些明顯的區(qū)別是:

    組件 Struts1 Struts2
    動(dòng)作班 Struts1動(dòng)作類(lèi)被強(qiáng)制擴(kuò)展一個(gè)Abstract Class,使其無(wú)法擴(kuò)展。 Struts2動(dòng)作類(lèi)非常靈活,我們可以通過(guò)實(shí)現(xiàn)Action接口,擴(kuò)展ActionSupport類(lèi)或僅具有execute()方法來(lái)創(chuàng)建它們。
    線程安全 Struts1操作類(lèi)是Singleton且不是線程安全的,因此在開(kāi)發(fā)人員方面要格外小心,以避免由于多線程而產(chǎn)生任何副作用。 每個(gè)請(qǐng)求都會(huì)實(shí)例化Struts2動(dòng)作類(lèi),因此不存在多線程處理并使它們成為線程安全的。
    Servlet API耦合 Struts1 API與Servlet API緊密耦合,并且Request和Response對(duì)象傳遞給操作類(lèi)的execute()方法。 Struts2 API與Servlet API松散耦合,并自動(dòng)將表單bean數(shù)據(jù)映射到我們最常用的動(dòng)作類(lèi)java bean屬性。 但是,如果需要引用Servlet API類(lèi),則可以使用* Aware接口。
    測(cè)試中 由于Servlet API耦合,Struts1動(dòng)作類(lèi)很難測(cè)試。 Struts2 Action類(lèi)就像普通的Java類(lèi)一樣,我們可以通過(guò)實(shí)例化它們并設(shè)置它們的屬性來(lái)輕松地對(duì)其進(jìn)行測(cè)試。
    請(qǐng)求參數(shù)映射 Struts1要求我們創(chuàng)建ActionForm類(lèi)來(lái)保存請(qǐng)求參數(shù),并且需要在struts配置文件中對(duì)其進(jìn)行配置。 Struts2請(qǐng)求參數(shù)映射是動(dòng)態(tài)完成的,我們需要做的是在動(dòng)作類(lèi)中具有Java Bean屬性,或者實(shí)現(xiàn)ModelDriven接口以提供用于映射的Java Bean類(lèi)名稱(chēng)。
    標(biāo)簽支持 Struts1使用JSTL標(biāo)簽,因此受到限制。 Struts2使用OGNL并提供各種UI,控件和數(shù)據(jù)標(biāo)簽。 它更加通用且易于使用。
    驗(yàn)證方式 Struts1支持通過(guò)手動(dòng)validate()方法進(jìn)行驗(yàn)證 Struts2支持手動(dòng)驗(yàn)證以及驗(yàn)證框架集成。
    視圖渲染 Struts1使用標(biāo)準(zhǔn)的JSP技術(shù)為JSP頁(yè)面提供bean值以供查看。 Struts2使用ValueStack存儲(chǔ)請(qǐng)求參數(shù)和屬性,我們可以使用OGNL和Struts2標(biāo)簽訪問(wèn)它們。
    模塊支持 Struts1模塊設(shè)計(jì)復(fù)雜,看起來(lái)像單獨(dú)的項(xiàng)目 Struts2為軟件包提供“命名空間”配置,以輕松創(chuàng)建模塊。
  • 什么是Struts2核心組件?

    Struts2的核心組件是:

  • 動(dòng)作班
  • 攔截器
  • 結(jié)果頁(yè)面,FreeMarker模板的JSP
  • ValueStack,OGNL和標(biāo)簽庫(kù)
  • Struts2中的攔截器是什么?

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

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

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

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

  • 在Struts2中創(chuàng)建Action類(lèi)的不同方式有哪些?

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

  • 通過(guò)實(shí)現(xiàn)動(dòng)作界面
  • 使用Struts2 @Action注釋
  • 通過(guò)擴(kuò)展ActionSupport類(lèi)
  • 任何將execute()方法返回String的普通Java類(lèi)都可以配置為Action類(lèi)。
  • Struts2動(dòng)作和攔截器是否是線程安全的?

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

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

  • Struts2中的Front Controller是哪個(gè)類(lèi)?

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

  • Struts2中的Interceptor有什么好處?

    攔截器的一些好處是:

    • 攔截器在實(shí)現(xiàn)高級(jí)別關(guān)注點(diǎn)分離方面起著至關(guān)重要的作用。
    • Struts2攔截器是可配置的,我們可以為所需的任何操作配置它。
    • 我們可以創(chuàng)建自己的自定義攔截器來(lái)執(zhí)行一些常見(jiàn)任務(wù),例如請(qǐng)求參數(shù)記錄,身份驗(yàn)證等。這有助于我們?cè)趩蝹€(gè)位置處理常見(jiàn)任務(wù),從而降低了維護(hù)成本。
    • 我們可以創(chuàng)建攔截器堆棧以用于不同的動(dòng)作。
  • 什么是ValueStack和OGNL?

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

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

  • 命名一些在Struts2中引入的有用注釋?

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

  • @Action創(chuàng)建動(dòng)作類(lèi)
  • @Actions為多個(gè)動(dòng)作配置單個(gè)類(lèi)
  • @Namespace和@Namespaces用于創(chuàng)建不同的模塊
  • 結(jié)果頁(yè)的@Result
  • @ResultPath用于配置結(jié)果頁(yè)面的位置
  • 提供一些重要的Struts2常量?

    我使用的一些Struts2常量是:

  • struts.devMode以開(kāi)發(fā)模式運(yùn)行我們的應(yīng)用程序。 此模式不會(huì)重新加載屬性文件,并提供額外的日志記錄和調(diào)試功能。 這在開(kāi)發(fā)應(yīng)用程序時(shí)非常有用,但是在將代碼移至生產(chǎn)環(huán)境時(shí)應(yīng)將其關(guān)閉。
  • struts.convention.result.path來(lái)配置結(jié)果頁(yè)面的位置。 默認(rèn)情況下,Struts2在{WEBAPP-ROOT} / {Namespace} /中查找結(jié)果頁(yè)面,我們可以使用此常量更改位置。
  • struts.custom.i18n.resources定義用于i18n支持的全局資源束。
  • struts.action.extension為Struts2應(yīng)用程序配置URL后綴。 默認(rèn)后綴為.action,但有時(shí)我們可能希望將其更改為.do或其他名稱(chēng)。
  • 我們可以像下面這樣在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>
  • Struts2中的動(dòng)作映射中名稱(chēng)空間的用途是什么?

    Struts2名稱(chēng)空間配置使我們可以輕松創(chuàng)建模塊。 我們可以使用名稱(chēng)空間根據(jù)操作類(lèi)的功能來(lái)分隔它們,例如admin,user,customer等。

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

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

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

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

  • 將Action接口和ActionSupport類(lèi)用于我們的操作類(lèi)有什么區(qū)別,您希望使用哪種?

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

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

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

  • 我們?nèi)绾卧趧?dòng)作類(lèi)中獲取Servlet API請(qǐng)求,響應(yīng),HttpSession等對(duì)象?

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

    因此,Struts2 API提供了一堆* Aware接口,我們可以實(shí)現(xiàn)這些接口來(lái)訪問(wèn)這些對(duì)象。 Struts2 API使用依賴注入將Servlet API組件注入到操作類(lèi)中。 一些重要的Aware接口是SessionAware,ApplicationAware,ServletRequestAware和ServletResponseAware。

    您可以在Struts2 Action Classes教程中的如何獲取Servlet API會(huì)話中了解有關(guān)它們的更多信息。

  • execAndWait攔截器有什么用?

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

    查看Struts2 execAndWait攔截器示例,以了解有關(guān)此攔截器以及如何使用它的更多信息。

  • Struts2中的令牌攔截器有什么用?

    Web應(yīng)用程序的主要問(wèn)題之一是雙重表單提交。 如果不小心,重復(fù)提交表單可能導(dǎo)致向客戶收取雙倍的費(fèi)用或兩次更新數(shù)據(jù)庫(kù)值。 我們可以使用令牌攔截器來(lái)解決雙重表單提交問(wèn)題。 這個(gè)攔截器是在struts-default包中定義的,但它不是任何攔截器堆棧的一部分,因此我們需要在操作類(lèi)中手動(dòng)添加它。

    在Struts2令牌攔截器示例中了解更多信息。

  • 我們?nèi)绾螌og4j集成到Struts2應(yīng)用程序中?

    Struts2為日志目的提供了log4j API的輕松集成,我們所需要的只是WEB-INF / classes目錄中的log4j配置文件。

    您可以在Struts2 Log4j集成中簽出示例項(xiàng)目。

  • 我們?nèi)绾问褂盟鼈?#xff1f;

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

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

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

    一些重要的數(shù)據(jù)標(biāo)簽是屬性,設(shè)置,推送,Bean,操作,包含,i18n和文本標(biāo)簽。 在Struts2數(shù)據(jù)標(biāo)簽中了解更多信息 。

    控制標(biāo)簽用于操作和導(dǎo)航集合中的數(shù)據(jù)。 一些重要的控制標(biāo)簽是if-elseif-else,迭代器,附加,合并,排序,子集和生成器標(biāo)簽。 在Struts2控制標(biāo)簽上了解更多信息。

    Struts2 UI標(biāo)記用于生成HTML標(biāo)記語(yǔ)言,將HTML表單數(shù)據(jù)綁定到動(dòng)作類(lèi)屬性,類(lèi)型轉(zhuǎn)換,驗(yàn)證和i18n支持。 一些重要的UI標(biāo)簽是表單,文本字段,密碼,文本區(qū)域,復(fù)選框,選擇,廣播和提交標(biāo)簽。 在Struts2 UI標(biāo)簽上閱讀有關(guān)它們的更多信息。

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

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

    OGNL非常靈活,我們可以輕松地對(duì)其進(jìn)行擴(kuò)展以創(chuàng)建自己的自定義轉(zhuǎn)換器類(lèi)。 創(chuàng)建和配置定制類(lèi)型轉(zhuǎn)換器類(lèi)非常容易,第一步是修復(fù)定制類(lèi)的輸入格式。 第二步是實(shí)現(xiàn)轉(zhuǎn)換器類(lèi)。 類(lèi)型轉(zhuǎn)換器類(lèi)應(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。

    有關(guān)實(shí)現(xiàn)的詳細(xì)信息,請(qǐng)閱讀Struts2 OGNL示例教程 。

  • 我們?nèi)绾尉帉?xiě)自己的攔截器并將其映射為行動(dòng)?

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

    使用自定義攔截器的最佳示例之一是驗(yàn)證會(huì)話,請(qǐng)?jiān)赟truts2 Interceptor Tutorial中閱讀有關(guān)會(huì)話的更多信息。

  • 攔截器的生命周期是多少?

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

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

  • 什么是攔截器堆棧?

    攔截器堆棧可幫助我們將一個(gè)包裝中的多個(gè)攔截器組合在一起以備將來(lái)使用。 struts-default軟件包創(chuàng)建一些最常用的攔截器堆棧-basicStack和defaultStack。 我們可以在包的開(kāi)頭創(chuàng)建自己的攔截器堆棧,然后配置操作類(lèi)以使用它。

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

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

  • Struts2操作URI的默認(rèn)后綴是什么,我們?nèi)绾胃乃?#xff1f;

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

    <constant name="struts.action.extension" value="action,do"></constant>
  • 結(jié)果頁(yè)的默認(rèn)位置是什么,我們?nèi)绾胃乃?#xff1f;

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

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

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

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

    在Struts2文件上傳示例中閱讀有關(guān)FileUpload攔截器的更多信息。

  • 開(kāi)發(fā)Struts2應(yīng)用程序時(shí)應(yīng)遵循的最佳實(shí)踐是什么?

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

  • 創(chuàng)建軟件包時(shí),請(qǐng)始終嘗試擴(kuò)展struts-default軟件包,以避免配置攔截器時(shí)的代碼冗余。
  • 對(duì)于整個(gè)應(yīng)用程序中的常見(jiàn)任務(wù),例如記錄請(qǐng)求參數(shù),請(qǐng)嘗試使用攔截器。
  • 始終將動(dòng)作類(lèi)的Java bean屬性保留在單獨(dú)的bean中,以供代碼重用并實(shí)現(xiàn)ModelDriven接口。
  • 如果您有要在多個(gè)操作中使用的自定義攔截器,請(qǐng)為此創(chuàng)建攔截器堆棧,然后使用它。
  • 嘗試根據(jù)功能區(qū)域使用名稱(chēng)空間配置將應(yīng)用程序劃分為不同的模塊。
  • 嘗試在結(jié)果頁(yè)面中使用Struts2標(biāo)記以澄清代碼,如果需要,請(qǐng)創(chuàng)建自己的類(lèi)型轉(zhuǎn)換器。
  • 使用開(kāi)發(fā)模式可以加快開(kāi)發(fā)速度,但是請(qǐng)確保生產(chǎn)代碼不在開(kāi)發(fā)模式下運(yùn)行。
  • 將Struts2 i18n支持用于資源包并支持本地化。
  • Struts2提供了許多地方,您可以在其中擁有資源包,但嘗試保留一個(gè)全局資源包和一個(gè)動(dòng)作類(lèi)資源包,以避免混淆。
  • struts-default軟件包配置所有攔截器并創(chuàng)建不同的攔截器堆棧。 嘗試僅使用所需的內(nèi)容,例如,如果您沒(méi)有本地化要求,則可以避免使用i18n攔截器。
  • 這就是Struts2面試問(wèn)答的全部?jī)?nèi)容,如果您遇到任何我遺漏的重要問(wèn)題,請(qǐng)通過(guò)評(píng)論告知我。

    參考:我們的JCG合作伙伴 Pankaj Kumar在Developer Recipes博客上發(fā)布的Struts2面試問(wèn)答 。

    翻譯自: https://www.javacodegeeks.com/2013/11/struts2-interview-questions-and-answers.html

    struts2面試問(wèn)題

    創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

    總結(jié)

    以上是生活随笔為你收集整理的struts2面试问题_Struts2面试问答的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。