2

对于我正在进行的当前项目,我决定使用前端控制器模式。我一直认为前端控制器应该(最终)对 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(暂时)。

4

1 回答 1

1

Front 控制器的主要目的是为处理请求提供一个集中的入口点,因此

从前端控制器控制一组相关页面(例如,在线购买中可能使用多个页面)的导航,而不是让单个页面负责导航

将资源初始化的职责与 Front 控制器模式分开是很好的,并且您为此选择了正确的位置,因为ServletContextListener它负责接收有关 ServletContext 生命周期的通知事件。类内的代码ServletContextListener将在 Web 应用程序启动之前运行。

于 2014-01-02T13:13:50.690 回答