1

我想知道部署在JBoss/Weblogic/Webphere上的任何Web应用程序的起点是什么。Web应用程序工作流程中的控制器Servlet

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

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

还有一个关于我的想法的问题,想知道有什么特定于Application Server的东西吗?如果是的话,任何见解将不胜感激。

在此先感谢...

+0

以及如果没有调度servlet但每个servlet充当“控制器”会怎样? – BigMike 2013-02-15 09:26:07

+0

我相信请求调度员是一个不像控制器一样的代理,像Action Servlet – 2013-02-15 09:29:47

+1

您还没有看到我的观点。您可以让Web应用程序使用MVC模式,而无需分派器或操作servlet。因此,首先决定要使用哪个框架(如果您想使用框架),然后可以尝试正确回答您的问题 – BigMike 2013-02-15 10:32:51

回答

1

你澄清后,我会试着写下来我怎么结构简单Web应用程序(没有框架)

  1. 启动servlet中,仅初始化全局的东西并检查资源(数据库池,jms)。只有它的init()方法实现并加载了订单0.
  2. 登录servlet,其登录jsp作为其主视图。
  3. 一组欢迎页面将用户重定向到登录servlet(在web.xml中)
  4. 仪表板小服务程序,使用简单的jsp作为视图来管理菜单,并为应用程序提供了一个不错的起点。

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

通常我会将每个请求管理为单个servlet,doGet()或doPost()方法,但它不是强制性的,取决于我在做什么。例如,如果您必须生成报告并且此代需要时间,那么servlet只需将某个报告请求包含在某个地方(JMS队列或启动Quartz任务),并通过礼貌页面向浏览器返回控制权,该请求已排队。

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

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

+0

Great !!!接下来,一旦请求落入servlet中,请求的整个生命周期将在单个线程中处理。正确? – 2013-03-01 08:27:34

+0

看到我的编辑,希望这将清除您的疑问 – BigMike 2013-03-01 08:42:55

+0

我明白,分派到另一个servlet的请求将在另一个线程中执行..它会再次成为不同的网址。正确? – 2013-03-01 08:58:52

相关问题