Java前端控制器
我正在考虑在我的J2EE应用程序中实现Front Controller。 你能不能build议几个链接(与源代码示例)和任何标准遵循相同?
最好的祝福
首先,创build一个监听特定url-pattern
的Servlet
,例如/pages/*
。 实现service()
方法来查找与请求方法( GET
, POST
等)和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一个很好的框架列表和讨论;