这是我早期进入 Java EE 时的同一个问题 ;-)
似乎您已经将控制器的概念直接映射到 servlet,这在您的示例项目中可能是正确的。但是对于一个更现实的项目来说,这几乎是不真实和可维护的。所以对于我下面的回答,请记住,控制器和 servlet 是两个不同的概念,我打算先回答你的第二个问题。
Q2:
由于servlet映射必须在web.xml中硬编码,这很麻烦(我的意思是,你更喜欢写Java代码而不是XML的东西,对吧?),现在主流的MVC框架(struts、Spring MVC等)都采取了类似的方式单个“调度程序”servlet 实践。
这个 servlet 引导框架,加载您的自定义控制器,然后您的整个应用程序就可以运行了。这个 dispatcher servlet 负责根据不同的请求路径、查询参数,找到正确的控制器。
Q1:
对于每个视图一个控制器,或一个控制器到多个视图,没有单一的最佳实践。我的建议是只要你能保持你的代码干净和一致,选择适合你项目的任何策略。毕竟,这是组织代码的一种体验。
控制器和视图是两个不同的层来分离关注的问题,对吧?
顺便说一句,我强烈建议你选择主流 MVC 框架的设计文档,我认为他们可以更好地解释你的困惑。
外部参考:
http://www.jpalace.org/docs/articles/mvc/mvc.html 这是一篇关于实现调度 servlet 的好文章。它实际上使用 MVC 设计模式构建了一个非常小但完整的框架。
http://static.springsource.org/spring/docs/2.0.x/reference/mvc.html上面的图表很好地解释了调度程序 servlet 在框架中的作用。