Java servlet-前端控制器问题(侦听器和上下文)

Java servlet-前端控制器问题(侦听器和上下文),java,servlets,listener,front-controller,Java,Servlets,Listener,Front Controller,对于我正在进行的当前项目,我决定使用前端控制器模式。我一直认为前端控制器应该(最终)对web应用程序中发生的一切负责。听众会违反这种模式吗 public class MyDatabase implements ServletContextListener { public void contextInitialized(ServletContextEvent event) { ... String driver = context.getInitParam

对于我正在进行的当前项目,我决定使用前端控制器模式。我一直认为前端控制器应该(最终)对web应用程序中发生的一切负责。听众会违反这种模式吗

public class MyDatabase implements ServletContextListener {
    public void contextInitialized(ServletContextEvent event) {
        ...
        String driver = context.getInitParameter("driver");
    }
}
当然,这似乎比:

public class FrontController extends HttpServlet {
    public void service (....) {
        MyDatabase db = new MyDatabase(context.getInitParameter("driver"));
    }
}
这是一个非常简单的例子;在实践中会有更多的参数。那么,哪个代码段被认为更忠实于前端控制器模式——从
FrontController
向下传递配置,或者直接向类提供配置

由于我是Java新手,我正在尝试在不使用框架的情况下学习servlet(目前)。

的主要目的是为处理请求提供一个集中的入口点,从而

控制一组相关页面的导航(例如, 在线购买中可能会使用多个页面) 控制器比它要使各个页面负责 航行


将资源初始化的责任与前端控制器模式分离是很好的,您可以为此选择一个正确的位置,因为
ServletContextListener
负责接收关于ServletContext生命周期的通知事件。ServletContextListener类中的代码将在web应用程序启动之前运行。

不要认为它与问题有关,但在第一种情况下,您只初始化一次数据源、连接等,即初始化上下文时。在第二种情况下,如果所有请求都通过FrontController路由,则将对每个请求重复此操作。