Java前端控制器

时间:2010-01-13 20:47:22

标签: jsp servlets java-ee front-controller

我正在考虑在我的J2EE应用程序中实现Front Controller。你可以用几个链接(带源代码示例)和&任何标准都要遵循?

祝你好运

2 个答案:

答案 0 :(得分:15)

首先,创建一个Servlet来监听某个url-pattern,例如/pages/*。实现service()方法以查找与请求方法(GETPOST等)和pathinfo(servlet的url-pattern之后的URL部分)相关联的操作。

基本示例:

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 JSFApache StrutsSpring MVCStripes等。如果你从来没有做过任何一个,那么我强烈建议你在养成一个之前这样做,否则你最终会浪费时间。

答案 1 :(得分:1)

Web上充满了成熟的Java Web框架。我没有理由创建一个新的,但有两个例外:1。你有一些非标准的环境/流程,需要一些非常非常具体的需求。 2.您只是想通过创建框架来了解httpservlet开发的细节。

JSR 154定义了servlet规范。在此处找到它:http://jcp.org/en/jsr/detail?id=154

Spring是当前流行的框架之一,也是适用于我的框架之一。 Struts是最早流行的框架之一。找到一个很好的框架列表以及http://java-source.net/open-source/web-frameworks

的讨论