Java前端控制器

我正在考虑在我的J2EE应用程序中实现Front Controller。 你能不能build议几个链接(与源代码示例)和任何标准遵循相同?

最好的祝福

首先,创build一个监听特定url-patternServlet ,例如/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应该以类Map<String, Action>forms维护实现Action的类,其中String键表示less于或多于请求方法和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); } 

这应该让你开始(注意,我留下了所有显而易见的检查,如空指针,使例子更加混乱,这是由你自己决定)。

在整个故事中还有更多需要考虑的内容,如validation,转换,事件处理,input值映射,本地化,dependency injection等等。 这一切都是相当的工作。 比较像样的MVC框架将这些都考虑在内,如Sun JSF , Apache Struts , Spring MVC , Stripes等等。 如果你从来没有做过任何一个,那么我强烈build议在做一个之前这样做,否则你会浪费时间。

networking充满了成熟的Java Web框架。 我看不出有什么理由创build一个新的例外:1.你有一些非标准的环境/stream程,需要一些非常非常具体的需求。 2.你只是想通过创build一个框架来了解httpservlet开发的细节。

JSR 154定义了servlet规范。 在这里find它: http : //jcp.org/en/jsr/detail?id=154

Spring是当前stream行的框架之一,也是为我工作的框架之一。 Struts是第一个非常受欢迎的框架之一,开始不受欢迎。 在http://java-source.net/open-source/web-frameworksfind一个很好的框架列表和讨论;