我正在研究Java EE应用程序,我正在尝试按照MVC模式实现它。我不使用任何框架(例如Spring)来实现MVC结构。我只是编写自己的模型,视图和控制器。
我开始使用不同的Servlet为每个功能实现我的应用程序(例如LoginServlet,RegisterServlet)但我注意到很多人说一个Controller(Servlet)足以处理所有应用程序的功能。但是,我不明白如果没有得到一个混乱的代码,怎么会发生这种情况。我认为它的方式是让一个Servlet / Controller具有多个if / else语句,以便检查请求的来源。结果将是一个巨大的doPost或doGet方法,其中包含许多if / else语句,这听起来像个坏主意。
总而言之,为应用程序的每个功能使用不同的servlet是一个好主意还是坏主意,如果不好,我怎样才能通过使用一个servlet并且不创建大量方法来实现相同的功能呢?
答案 0 :(得分:1)
这取决于您使用的模式。我的建议是开始阅读设计模式。关于如何使用单个控制器的一个示例是" Front Controller"图案。着名的" Struts"是一个使用它的例子: https://en.wikipedia.org/wiki/Front_controller
以下是与示例实现的链接:
http://www.oracle.com/technetwork/java/frontcontroller-135648.html
答案 1 :(得分:0)
不,你应该以合理的方式划分你的服务。实际上你应该把你的包装分成大的逻辑部分。对于servlet,例如AuthenticationServet来处理所有身份验证流,RegistrationServlet,EShopServlet等
包
com.myapp.servlets.*
com.myapp.models.jpa*
com.myapp.models.(something)*
com.myapp.services.*
答案 2 :(得分:-1)
好与坏都是主观的。
通常有一个DispatcherServlet
(也就是前端控制器servlet)将接受HTTP请求并将代码路由到给定URL的适当处理程序。
我认为REST和微服务更进一步,并将功能公开为多个HTTP端点。
这是Java EE的另一个案例,或者你对它的解释,落后于时代。
我会使用Spring使用多个REST端点来执行此操作。