Java 多个servlet,或仅一个主控制器

Java 多个servlet,或仅一个主控制器,java,jsp,servlets,Java,Jsp,Servlets,考虑一个web应用程序,它具有一些主要功能,例如注册功能、登录功能,以及用户登录后的CRUD操作功能。我的问题是,我是否有多个servlet来处理每个特定的任务,或者我是否将它们全部分组到一个主控制器servlet中,该servlet正在与数据访问对象通信 我不想使用任何预先存在的框架,我想学习正确实现这些功能的正确方法。如果有人能帮助我,我将不胜感激 谢谢 web应用程序只有一个入口点可以在一定程度上缓解您的生活。这就是为什么我赞成编写一个控制器来接受所有传入的请求。当您有一个入口点而不是多个

考虑一个web应用程序,它具有一些主要功能,例如注册功能、登录功能,以及用户登录后的CRUD操作功能。我的问题是,我是否有多个servlet来处理每个特定的任务,或者我是否将它们全部分组到一个主控制器servlet中,该servlet正在与数据访问对象通信

我不想使用任何预先存在的框架,我想学习正确实现这些功能的正确方法。如果有人能帮助我,我将不胜感激


谢谢

web应用程序只有一个入口点可以在一定程度上缓解您的生活。这就是为什么我赞成编写一个控制器来接受所有传入的请求。当您有一个入口点而不是多个入口点时,调试代码会更容易。控制器应该简单高效,因为它的工作应该是将请求分派给适当的处理程序(其他类)

控制器的数量取决于您想要实现的功能的类型。 如果两个或多个特性相似(做相似的工作),那么您可以轻松地将它们组合成一个或两个servlet

但是,如果您正在实现的功能不同,那么使用单独的控制器将是很好的

以下是为单独和不同的功能使用单独控制器更好的几个原因:

1.)您的应用程序将更加模块化

2.)这些功能的升级和维护将更容易,因为要更改一个功能,您不必删除其他功能(在一个控制器servlet中实现所有功能时,这是不可能的)

3.)添加和删除新功能会更容易,因为您不必触摸其他控制器


4.)调试和错误查找将更容易,因为每个控制器都有特定的任务,因此用于调试的组件将有效减少。

我对您的问题的建议如果您有多个操作,那么您可以使用多个控制器,例如,如果其任务与用户相关,那么您只能为其创建一个控制器与用户相关的任务和在该用户控制器中的写入方法/请求映射。通过这种方式,您可以在单独的控制器中创建其他操作,这将帮助您简化项目。

非常感谢您的回复。我理解你的观点,尽管你发现servlet类真的被代码阻塞了吗?@user2660806当我说controller时,我指的是一个接受所有请求的servlet。Servlet永远不会影响性能,除非我们在其中放入一些垃圾代码。谢谢,回答得很好。不过,在你的情况下,你会把什么组合在一起?(登录、注册),(CRUD操作)?如果案例中有多个不同的控制器,是否可以从登录点条目维护sesison?(一个servlet到另一个servlet)如果我必须对功能进行分组,那么我将把
登录检查
重定向到登录页面
放在一个组中。
登录
注册
是非常不同的事情,因为登录时你只需处理
数据库
来验证用户名和密码(不更新数据库),但是注册后,您必须在
DB
中创建新条目,并且可能还必须更新其他几个数据库。所以我将把
登录
注册
分开。您可以将不同资源的
授权
放在一个组中。此外,
根据某些条件为不同目的选择不同的视图
也可以组合在一起。另外,对于您的第二个问题>>如果不存在会话,则只要用户点击您的应用程序,就会创建一个新的会话,无论它正在访问哪个页面。因此,您甚至可以在登录点之前使用MANNAGE会话。请看,这正是我所需要的。非常感谢您的回复和精彩的回答。你有什么好的教程,我可以从中学到这些重要的方面吗?在教科书中,它们不会安静地为您提供实际完整工作的web应用程序的详细介绍。如果您有任何好的资源,请转发它们,如果您可以。谢谢如果您对web应用程序开发感兴趣,我建议您购买
头优先servlet和JSP
。这是一个最好的来源,你可以很容易地了解这些事情。现有的MVC框架只有一个控制器servlet。如果你想重新发明轮子,我建议你走同样的路。另请参见注意,控制器servlet通常根本不与DAO交互。相反,基于请求的操作和业务服务确实如此。