我正在考虑在我的J2EE应用程序中实现Front Controller。你可以用几个链接(带源代码示例)和&任何标准都要遵循?
祝你好运
答案 0 :(得分:15)
首先,创建一个Servlet
来监听某个url-pattern
,例如/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
应该保持实现Action
的类Map<String, Action>
,其中String
键表示请求方法和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);
}
这应该让你开始(注意我留下了所有明显的检查,例如空指针,以使示例更简洁,这取决于你现在)。
然而,在整个故事中还有更多需要考虑的因素,例如验证,转换,事件处理,输入值映射,本地化,依赖注入等。这一切都是相当重要的。更好的MVC框架将大部分内容都考虑在内,例如Sun JSF,Apache Struts,Spring MVC,Stripes等。如果你从来没有做过任何一个,那么我强烈建议你在养成一个之前这样做,否则你最终会浪费时间。
答案 1 :(得分:1)
Web上充满了成熟的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
的讨论