servlet应该执行多少个动作?

Sim*_*onw 7 java servlets

我是Web开发的新手,我只是想知道java servlet的最佳实践.每个servlet应该只执行一个操作,即用于登录的servlet,用于注册的servlet等,还是应该通过传递不同的参数来告诉servlet要执行哪个操作来组合类似的操作?

干杯

Zom*_*ies 5

您永远不应该传递参数来告诉 servlet 执行不同的操作。您所做的只是将 2 个 servlet 合并为一个,这会变得更加难以管理。每个“动作”都需要一个 servlet。

要避免的一个例子是:

/App/Servlet1?action=edit

if (request.getParamater("action").equals("edit")) {
//update fields

} else if (request.getParamater("action").equals("view")) {
//just query
}
Run Code Online (Sandbox Code Playgroud)

当您想要重新设计任何东西时,这往往会导致更多问题。您将需要单独的 servlet,因为它正在解耦您的逻辑,以便您可以轻松地更改它,而不是耦合它不应该与之相关的各种错综复杂的代码。另外,请查看关注点分离

修订/编辑:我现在要说这个(比原来的答案晚得多)......您可以保留“多个动作”的概念并将其放入单个 servlet(控制器)中。该控制器可以并且应该委托给各个动作处理程序。我认为这在关注点分离方面是一样的,并且比我原来的答案更清晰。换句话说,不要在 servlet 中实现任何东西,只将它用于路由。


pjp*_*pjp 4

在诸如 Struts 之类的框架中,只有一个 Servlet(尽管可能有多个实例在运行)。该 servlet 将处理对各种 URL 的请求,并将它们传递给相关的操作处理程序。

我最终只是编写额外的 servlet 来提供不同的内容类型,例如图像渲染 servlet。