Java 传递HttpServletrequest属性以公开从控制器调用的方法可以吗
我的问题可能很复杂,但我仍然想知道是否可以将HttpServletRequest、HttpServletResponse对象作为参数传递给业务逻辑方法 这是一个好的编程实践吗? 示例:Java 传递HttpServletrequest属性以公开从控制器调用的方法可以吗,java,jakarta-ee,servlets,Java,Jakarta Ee,Servlets,我的问题可能很复杂,但我仍然想知道是否可以将HttpServletRequest、HttpServletResponse对象作为参数传递给业务逻辑方法 这是一个好的编程实践吗? 示例: @RequestMapping( value = "/controller_name" , method = RequestMethod.GET) public String getNewRegistrationPage(HttpServletRequest req,HttpServletResponse res
@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对象交互。良好实践是相对的。我个人的意见是不要这样做。我觉得控制器应该从发送到业务层的请求中提取信息。这样,您就有可能在非web应用程序环境中使用业务层。在不可行的情况下,我将使用一个util类与业务层和HttpServletRequest对象交互。最好不要这样做。我明白为什么要这样做是因为您希望在业务逻辑中使用来自JSP的参数。因此,这可以通过以下方式实现:
DataType param = request.getParameter("param");
getDetails(param);
因此,按照建议的方式,在重定向到相应的视图之前,所有业务逻辑都应该在控制器中调用的函数中。最好不要这样做。我明白为什么要这样做是因为您希望在业务逻辑中使用来自JSP的参数。因此,这可以通过以下方式实现:
DataType param = request.getParameter("param");
getDetails(param);
因此,按照建议的方式,在重定向到相应的视图之前,您的所有业务逻辑都应该在控制器中调用的函数中。我认为使用请求和响应作为输入参数的业务逻辑不是一个好做法,因为在其他一些情况下,您无法有效地重用业务逻辑 在过去,我们习惯于将请求中的所有数据复制到Hashmap中,并将Hashmap作为业务逻辑的输入参数传递
我不认为您总是需要读取无限的参数,所以现在我更喜欢使用简单的POJO,在我看来它更易于维护。我认为使用请求和响应作为输入参数的业务逻辑不是一个好的做法,因为在其他一些情况下您无法有效地重用业务逻辑 在过去,我们习惯于将请求中的所有数据复制到Hashmap中,并将Hashmap作为业务逻辑的输入参数传递
我不认为您总是需要读取无限参数,所以现在我更喜欢使用简单的POJO,它在我看来更易于维护。原因与本文中已经提到的相同:我认为这不是一个好的实践
相反,我建议您寻找更多关于提取请求数据并将其传递给业务逻辑的可能方法的信息。原因与本文中已经提到的相同:我认为这不是一个好的做法
相反,我建议您寻找更多有关提取请求数据并将其传递给业务逻辑的可能方法的信息。是的,这是可能的,在我们的商店中,我们有很多代码可以这样做。虽然您可以,但您不应该这样做。这是因为接收这些参数的方法将不可重用以处理非请求调用。例如,您的方法可以接收HttpRequest以获取一些数值参数并从中应用财务公式,但是如果您需要在项目的其他部分再次使用此公式,该怎么办?servlet获取参数并将它们(作为大量参数或使用数据构建对象)发送到您的业务方法会更好。是的,这是可能的,在我们的商店中,我们有很多代码可以这样做。虽然您可以,但您不应该这样做。这是因为接收这些参数的方法将不可重用以处理非请求调用。例如,您的方法可以接收HttpRequest以获取一些数值参数并从中应用财务公式,但是如果您需要在项目的其他部分再次使用此公式,该怎么办?最好由servlet获取参数并将它们(作为大量参数或使用数据构建对象)发送到您的业务方法。