6

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

最好的祝福

4

2 回答 2

15

首先,创建一个Servlet监听某个 的url-pattern,例如/pages/*。实现该方法以查找与请求方法( 、等)和 pathinfo(servlet 之后的 URL 部分)service()关联的操作。GETPOSTurl-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键代表或多或少的请求方法和路径信息的组合。然后你可以得到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等。如果你从来没有做过任何一个,那么我强烈建议你在家种植之前这样做,否则你最终会浪费时间。

于 2010-01-13T22:39:24.700 回答
1

网络上到处都是成熟的 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上找到一个很好的框架列表以及讨论

于 2010-01-13T20:58:56.397 回答