0

我正在将我的 Java servlet 前端控制器从一个大型 if-else if 块移植到命令模式,并创建了一个带有执行方法的命令接口。init()目前,我正在我的 servlet 方法中实例化每个命令的实例,并将它们存储在HashMap. 我想知道如何command.execute()在给定请求的上下文中运行必要的?

我是在执行之前setContext(HttpServletRequest request, HttpServletResponse response);向接口添加一个方法并command.setContext(request, response)从我的doGet()/doPost()方法调用,还是我不应该一init()开始就实例化命令?相反,有一个将requestresponse作为参数的构造函数?

显然,该命令的目的是为给定的用户/会话设置各种属性并确定要转发到的正确 JSP,如果没有上下文,它就无法真正做到这一点。

4

1 回答 1

2

你应该使用:

command.execute(HttpServletRequest request, HttpServletResponse response);

所有状态都可以(并且应该)记录在请求中。这很容易通过存储属性来实现。

有时您可能需要使用:

command.execute(this, HttpServletRequest request, HttpServletResponse response);

但可能仅当您的命令是enum而不是真实对象时。

于 2013-09-12T11:19:26.863 回答