Java前端控制器[重复]
Posted
技术标签:
【中文标题】Java前端控制器[重复]【英文标题】:Java Front Controller [duplicate] 【发布时间】:2011-01-04 19:57:41 【问题描述】:我正在考虑在我的 J2EE 应用程序中实现 Front Controller。您能否建议使用少量链接(带有源代码示例)和任何要遵循的标准?
最好的问候
【问题讨论】:
Spring MVC 框架怎么样? springsource.org J2EE 被 Java EE 取代已经 3 年多了。让自己保持最新状态。 是的,我知道,但我通常会这样做......无论如何,谢谢。 【参考方案1】:首先,创建一个Servlet
,它监听某个url-pattern
,例如/pages/*
。实现service()
方法以查找与请求方法(GET
、POST
等)和路径信息(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
键代表或多或少的请求方法和路径信息的组合。然后,您可以获得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 等。如果您从未做过任何一种,那么我强烈建议您在家种植之前这样做,否则您最终会浪费时间。
【讨论】:
当我阅读这些关于 Spring MVC 的文档时,它总是说 Servlet 引擎是 Tomcat。如果我的 servlet 引擎是 Glassfish,它会有什么不同吗? glassfish 会读取 web.xml 的内容吗? @Harry:春天有点反太阳。 @Harry:我并不是说 Spring 不适用于 GF。它会很好用。 @BalusC 如果您使用action.execute()
的示例扩展您的答案,您将解释控制器如何通过request.setAttribute()
将数据/帮助器传递给视图。我认为这是一个重要的概念来展示..
@yegor:这里有更详细的答案:***.com/questions/3541077/… 然而,这并没有抽象出外观类中的请求/响应。但就这一点而言,你可以让它委托。另请参阅链接答案底部如何描述Context
。上面答案中的示例有点裸露:)【参考方案2】:
网络上到处都是成熟的 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
找到一个很好的框架列表和讨论【讨论】:
以上是关于Java前端控制器[重复]的主要内容,如果未能解决你的问题,请参考以下文章