【问题标题】:Controller Servlet in Web Application workflowWeb 应用程序工作流中的控制器 Servlet
【发布时间】:2013-02-15 09:19:13
【问题描述】:

我想知道部署在 JBoss/Weblogic/Webphere 上的任何 Web 应用程序的起点是什么。

例如,如果您采用基于 struts 的应用程序,则起点是 ActionServlets 扮演管理所有传入请求的控制器的角色。我确信控制器依赖于框架。

如果是这样,请帮助我确定除 Struts、Flext 等之外的流行框架,我可以在其中假定 ActionServlet 作为我的控制器。

我的脑海中仍然有一个问题,想知道 Application Server 有什么特定的吗?如果是这样,任何见解都将受到高度赞赏。

在此先感谢...

【问题讨论】:

  • 如果没有调度 servlet 但每个 servlet 都充当“控制器”怎么办?
  • 我相信 Request dispatcher 是一个委托而不是像 Action Servlet 这样的控制器
  • 你没有看到我的意思。您可以拥有使用 MVC 模式的 Web 应用程序,而无需使用 Dispatcher 或 Action servlet。所以首先决定你要使用哪个Framework(如果你想使用一个Framework),然后才有可能尝试正确回答你的问题
  • 我同意可以有多个 servlet。这意味着不止一个控制器或多个入口点

标签: java model-view-controller web-applications servlets controller


【解决方案1】:

在您澄清之后,我将尝试写下如何构建简单的 Web 应用程序(无框架)

  1. 一个启动 servlet,仅初始化全局内容并检查资源(数据库池、jms)。只有它的 init() 方法实现并加载了订单 0。
  2. 一个登录 servlet,以登录 jsp 作为其主视图。
  3. 一组将用户重定向到登录 servlet(在 web.xml 中)的欢迎页面
  4. 仪表板 servlet,带有一个简单的 jsp 作为视图,可以插入菜单并为应用程序提供一个很好的起点。

在此之后,每个操作/菜单都将映射到一个或多个 servlet,执行所有免费活动并重定向到 jsp 视图。

通常我将每个请求管理到单个 servlet、doGet() 或 doPost() 方法中,但这不是强制性的,取决于我在做什么。

例如,如果您必须生成一个报告并且此生成需要时间,则 servlet 只需在某处(JMS 队列或启动 Quartz 任务)将报告请求加入队列,并通过一个说明页面将控制权交还给浏览器请求已排队。

在某些情况下,来自 Web UI 的单个请求在功能上会影响我的更多“servlet”,在这种情况下,我使用 RequestDispatcher 实用程序链接请求。

这样做可能会导致代码重复,因此良好的业务类树设计是必须的。 servlet 之间共享的通用业务代码(充当用户输入、业务逻辑和数据逻辑之间的粘合剂 - 就像控制器 ^^)

【讨论】:

  • 太棒了!!!接下来,一旦请求进入 servlet,请求的整个生命周期将在单个线程中处理。对吗?
  • 我知道发送到另一个 servlet 的请求将在另一个线程中执行。它将再次成为不同的 URL。对吗?
  • 我浏览了几份文件,在任何地方都没有明确说明。你找到什么了吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多