Java servlet-前端控制器问题(侦听器和上下文)
对于我正在进行的当前项目,我决定使用前端控制器模式。我一直认为前端控制器应该(最终)对web应用程序中发生的一切负责。听众会违反这种模式吗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
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路由,则将对每个请求重复此操作。