簡體   English   中英

傳遞HttpServletrequest屬性以公開從控制器調用的方法是否可以?

[英]Is it fine to pass HttpServletrequest attribute to expose to the methods that is called from the controller

我的問題可能很老套,但我仍然想知道我們是否可以將HttpServletRequest,HttpServletResponse對象作為參數傳遞給業務邏輯方法?

那是一個好的編程習慣嗎?

范例:

@RequestMapping( value = "/controller_name" , method = RequestMethod.GET)
public String getNewRegistrationPage(HttpServletRequest req,HttpServletResponse res)
{
    getDetails(req);
}

public void businessLogic(HttpServletRequest **req**)
{
    //business logic here
}

謝謝,Sridhar R

好的做法是相對的。 我個人的看法是不這樣做。 我覺得控制器應該從請求中提取信息以發送到業務層。 這樣,您可能會在非Web應用程序環境中使用業務層。 在這不可行的情況下,我將有一個util類與業務層和HttpServletRequest對象進行交互。

最好不要這樣做。 我知道為什么要這樣做是因為您希望將JSP中的參數用於業務邏輯。 因此,可以使用以下命令完成此操作:

DataType param = request.getParameter("param");

getDetails(param);

因此,按照建議的方式,在重定向到相應的視圖之前,所有業務邏輯都應包含在控制器中調用的函數中。

我認為做一個使用請求和響應作為輸入參數的業務邏輯不是一個好習慣,因為在其他情況下您不能有效地重用業務邏輯。

過去,我們曾經將請求中的所有數據復制到Hashmap中,並將該hashmap傳遞為業務邏輯的輸入參數。

我不認為您總是需要讀取無窮大的參數,所以現在我更喜歡使用簡單的POJO,我認為它更易於維護。

出於與本博文已經提到的相同原因:我認為這不是一個好習慣。

相反,我建議您查看此處以獲取有關提取請求數據並將其傳遞到業務邏輯的可能方法的更多信息。

暫無
暫無

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

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