14

好吧,我想学习 Struts,所以我将从 Struts 1 开始,我想知道一般流程。需要什么文件?

struts-config.xml 的作用是什么?验证.xml?validation-rules.xml 当您访问您的 JSP 页面时,触发了一个动作,会发生什么?Action 和 Form 类有什么作用?触发动作时首先调用哪个类。

我刚刚下载了一个示例表单,所有这些文件起初都令人困惑。我想知道发生了什么来更好地了解 Struts。

4

3 回答 3

35

您应该从 Struts 教程开始,这将使其易于理解:D。你可以在网上找到很多,尤其是 Struts 1。这里是一个起点,例如

但只是为了它,这里是一个高视图演示

首先,将 Struts 添加ActionServletweb.xml文件中,并将其配置为接受匹配特定映射的请求。对于 Struts 来说,这是*.do(你可以拥有任何你想要的东西,这*.do只是 Struts 社区中的一个约定)。

现在,任何到达服务器的具有这种*.doURL 模式的东西都会被发送到ActionServlet.

现在,struts-config.xml文件的内容开始发挥作用。这ActionServlet是一个前端控制器,它只是分派到其他更合适的资源进行特定处理。这些特定的资源就是Action类。

例如,您可以有一个LoginAction必须处理到达login.do路径的请求。在struts-config.xml你指定这个:login路径上的所有东西都必须发送到LoginAction类。

并且您可以拥有任意数量的声明,例如 path xcall XAction、 for ycallYAction等。

通常,您的客户端向服务器提交数据,即他输入 HTML 表单的数据。您需要在Action课堂上处理这些数据。现在输入ActionForm

ActionForm是 Struts 框架用来自 HTML 表单的数据填充的 bean。而不是这样做request.getParameter("foo"),您可以使用 formBean.getFoo()例如对象。

一旦你在课堂Action上使用.ActionForm

视图通常是 JSP 文件。当您从您的 . 返回时Action,您可以按名称指定一个“前进”位置(即到哪个视图去)。现在,信息再次出现在struts-config.xml文件中,其中视图名称映射到 JSP 位置。

然后框架会将控制权转发给该 JSP,JSP 呈现数据,然后将其作为 HTML 发送给客户端(客户端将不再需要直接访问 JSP - 它们必须被 Struts 框架隐藏)。

在新页面中,客户端再次执行一些请求并重复该过程。

好吧,这就是它所能得到的最高水平的展示。当然还有更多,但是您会在学习 Struts 时发现它们。

至于validator-rules.xmland validation.xml,它们由Validator框架使用,您可以通过使用插件与 Struts 集成(Struts 具有可用于添加新内容的插件),还可以为用户输入添加验证。

嗯,就是这样。您可以在网上找到大量提供更多详细信息的教程,但希望能帮助您更好地开始。

祝你好运!

于 2011-04-28T15:30:06.873 回答
8
  1. 当用户提交了一个jsp页面。该页面具有(的属性)action="login.do"。容器将调用web.xml. 其中 web.xml有两个部分 servlet 和 servlet 映射
  2. 在 servlet 映射中,它*.do在 url 模式中找到。如果它发现采用 servlet 的名称。并检查相应的类。在 servlet 部分。那堂课是 ActionServlet
  3. ActionServlet 是 Struts 模块架构的控制器。在具有服务方法的 Action servlet 中。在该方法中,我们创建 RequestPrecessor类实例
  4. Service(req,res) RequestPrecessor rp = new RequestPrecessor();
  5. RequestProcessor我们通过实例调用类的一个流程方法rp.process(req,res)
  6. 在请求处理器类中具有参数为req,res 的处理方法。那么它在这个类中有 1 if 条件。该条件返回始终为真。因为那是虚拟方法。

在这种情况下,有 6 个步骤正在处理

  1. Struts- Config.xml. 它将保留动作映射路径、值、类型转发等的所有细节,validation=true/false这些input ="*.jsp"r 创建的实例
  2. 然后它会在检查动作映射的名称和表单名称是否重合之前创建表单类实例,如果相同,它将创建表单实例
  3. 然后它会去ActionMapping实例化 ris 是否提及, validate =true/false如果为 false,它将不执行此步骤,否则它将执行此步骤。
  4. 然后它将创建动作实例
  5. 接下来它将接受执行方法的四个参数,它将返回 ActionErrors实例。如果它不为空。它将进入错误页面,否则它将进入相应的页面。else if 为空 if 会更进一步,在 jsp 视图中显示 page 的对应值。这就是 struts 流程。
于 2012-03-16T14:00:26.070 回答
0

Struts MVC 模型

模型


Struts 不直接支持 Model。但是,Struts 操作和配置文件使您能够自己实现它。

看法


1) 扩展 org.apache.struts.action.ActionForm 的表单 bean,在运行时以两种方式使用:

  • 当 JSP 页面准备相关的 HTML 表单以供显示时,JSP
    页面访问 bean,该 bean 保存要放入
    表单的值。这些值由业务逻辑或以前的用户输入提供。
  • 当用户输入从 Web 浏览器返回时,bean 将验证并保存该输入以供业务逻辑使用或(如果验证失败)以供后续重新显示。

2) Struts 标签库,如 bean、logic、html & tile 插件

控制器


  1. Struts action servlet根据部署时提供的一组规则来处理运行时事件。这些规则包含在 Struts 配置文件中,并指定 servlet 如何响应从业务逻辑接收到的每个结果。对控制流的更改只需要更改配置文件。
  2. Struts 动作扩展了 org.apache.struts.action.Action。在运行时,动作 servlet 被称为“执行动作”,这意味着 servlet 调用每个实例化动作类的执行方法。从 execute 方法返回的对象指示动作 servlet 下一步要访问什么动作或 JSP 文件。为了便于重用,请从操作类调用业务逻辑,而不是在该类中包含业务逻辑。

请参阅Struts 1.3 示例

供您比较和参考,这里是Struts 2.3演示

于 2019-05-12T15:07:10.680 回答