小编典典

Java Front Controller

jsp

我正在考虑在我的J2EE应用程序中实现FrontController。您能否以很少的链接(带有源代码示例)和任何遵循的标准来提出相同的建议?

最好的祝福


阅读 360

收藏
2020-06-08

共1个答案

小编典典

首先,创建一个Servlet侦听某个的url-pattern,例如/pages/*。落实service()查找与请求方法(相关联的操作方法GETPOST(后servlet的网址的一部分,等等)和PATHINFOurl-pattern)。

基本示例:

protected void service(HttpServletRequest request, HttpServletResponse response) 
  throws ServletException, IOException {
  View view = new View(request, response);
  Action action = ActionFactory.getAction(request);
  action.execute(view);
  view.navigate();
}

Action界面应代表一个工作单元。您可以实现它以执行必要的业务逻辑:

public interface Action {
  void execute(View view);
}

ActionFactory应保持执行的类Action中的排序Map<String,Action>,其中所述String键表示更少或更多的一个请求方法和PATHINFO的组合。然后您可以得到Action如下:

public static Action getAction(HttpServletRequest request) {
  return actions.get(request.getMethod() + request.getPathInfo());
}

View应代表的请求范围方面其Action可以工作。在中,navigate()您可以将请求转发到JSP进行显示:

public void navigate() {
  String path = "/WEB-INF" + request.getPathInfo() + ".jsp";
  request.getRequestDispatcher(path).forward(request, response);
}

这应该使您入门(请注意,我将所有明显的检查(例如空指针)都遗忘了,以使示例更简洁,这取决于您)。

但是,在整个过程中还有更多要考虑的因素,例如验证,转换,事件处理,输入值映射,本地化,依赖项注入等。这一切都是一件值得的工作。更体面的MVC框架考虑了所有这些因素,例如Sun
JSF
ApacheStrutsSpringMVC,Stripes等。如果您从未进行过任何操作,那么我强烈建议您在进行自种之前先进行操作,否则最终将浪费时间。

2020-06-08