我正在考虑在我的 J2EE 应用程序中实现 Front Controller。您能否通过少量链接(带有源代码示例)和任何要遵循的标准提出相同的建议?
最好的祝福
我正在考虑在我的 J2EE 应用程序中实现 Front Controller。您能否通过少量链接(带有源代码示例)和任何要遵循的标准提出相同的建议?
最好的祝福
首先,创建一个Servlet
监听某个 的url-pattern
,例如/pages/*
。实现该方法以查找与请求方法( 、等)和 pathinfo(servlet 之后的 URL 部分)service()
关联的操作。GET
POST
url-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 JSF、Apache Struts、Spring MVC、Stripes等。如果你从来没有做过任何一个,那么我强烈建议你在家种植之前这样做,否则你最终会浪费时间。
网络上到处都是成熟的 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上找到一个很好的框架列表以及讨论