簡體   English   中英

從 Action 的 execute() 方法創建一個新的 Struts Action 實例有什么問題嗎?

[英]Any problem with creating a new Struts Action instance from the Action's execute() method?

我正在使用 Struts 1.1(不要讓我開始),現在升級不是一個選項。 不幸的是,整個 singleton 動作方法讓我發瘋,並且使動作相當復雜,因為我們不能使用實例變量等,這意味着所有必要的對象都需要作為參數傳遞給所有方法。 我更喜歡使用實例變量,所以我想為來自 Action 的 execute 方法的每個請求創建一個新的 Action 實例,如下所示:

public ActionForward execute (ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
    return (new SaveUserDataAction()).instanceExecute(mapping, form, request, response);
}

public ActionForward instanceExecute (ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
    // all normal execute stuff goes here
}

這很好用,但我想知道你們是否能想到這種方法的任何問題。 我知道,由於創建了額外的 object,這將需要一些額外的 CPU 周期,但如今的智慧是,每個請求都會創建大量 object,Z34D1F91FB2E514B8576FAB1A75 還會再創建一個; 更不用說提高可讀性和可維護性是值得的。 還有其他更嚴重的缺點嗎?

此外,還有比這種半笨拙的方法更簡單的方法嗎? 也許是 Struts 支持的方法?

Struts 1.1 Actions不打算做業務邏輯:

在 Struts 應用程序中,大部分業務邏輯都可以使用 JavaBeans 來表示。 一個 Action 可以調用 JavaBean 的屬性而不知道它實際上是如何工作的。 這封裝了業務邏輯,使得 Action 可以專注於錯誤處理和將控制轉發到哪里。

問題不在於您正在創建一個額外的實例,而是您正在創建一個額外的動作實例而不是一些幫助程序/dao。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM