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() 方法以查找与请求方法(GETPOST 等)和路径信息(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前端控制器[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Java前端控制器模式~

Java前端控制器模式

Web前端-Vue控制台报错:Uncaught (in promise) TypeError:

设计模式-前端控制器模式

前端控制器

java js前端请求后台去获得音频流,然后播放音乐,音乐可以控制进度,显示总时长