我正在考虑在我的J2EE应用程序中实现FrontController。您能否以很少的链接(带有源代码示例)和任何遵循的标准来提出相同的建议?
最好的祝福
首先,创建一个Servlet侦听某个的url-pattern,例如/pages/*。落实service()查找与请求方法(相关联的操作方法GET,POST(后servlet的网址的一部分,等等)和PATHINFOurl-pattern)。
Servlet
url-pattern
/pages/*
service()
GET
POST
基本示例:
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界面应代表一个工作单元。您可以实现它以执行必要的业务逻辑:
Action
public interface Action { void execute(View view); }
在ActionFactory应保持执行的类Action中的排序Map<String,Action>,其中所述String键表示更少或更多的一个请求方法和PATHINFO的组合。然后您可以得到Action如下:
ActionFactory
Map<String,Action>
String
public static Action getAction(HttpServletRequest request) { return actions.get(request.getMethod() + request.getPathInfo()); }
本View应代表的请求范围方面其Action可以工作。在中,navigate()您可以将请求转发到JSP进行显示:
View
navigate()
public void navigate() { String path = "/WEB-INF" + request.getPathInfo() + ".jsp"; request.getRequestDispatcher(path).forward(request, response); }
这应该使您入门(请注意,我将所有明显的检查(例如空指针)都遗忘了,以使示例更简洁,这取决于您)。
但是,在整个过程中还有更多要考虑的因素,例如验证,转换,事件处理,输入值映射,本地化,依赖项注入等。这一切都是一件值得的工作。更体面的MVC框架考虑了所有这些因素,例如Sun JSF,ApacheStruts,SpringMVC,Stripes等。如果您从未进行过任何操作,那么我强烈建议您在进行自种之前先进行操作,否则最终将浪费时间。