【问题标题】:Basic flow of StrutsStruts的基本流程
【发布时间】:2011-04-27 18:10:26
【问题描述】:

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

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

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

【问题讨论】:

    标签: struts struts-validation struts-config


    【解决方案1】:

    您应该从 Struts 教程开始,这将使其易于理解 :D。你可以在网上找到很多,尤其是 Struts 1。Here is a starting point for example

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

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

    现在,任何到达服务器的带有*.do URL 模式的内容都会发送到ActionServlet

    现在,struts-config.xml 文件的内容开始发挥作用。 ActionServlet 是一个 front controller,它只是调度到其他更合适的资源以进行特定处理。这些特定资源是Action 类。

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

    你可以有任意多的声明,路径x调用XActiony调用YAction等等等等。

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

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

    一旦您使用ActionFormAction 类中进行处理,您就必须在某个视图中呈现结果(顺便说一下,Struts 是一个MVC 框架,因此您必须了解一两件事这也是)。

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

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

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

    嗯,这是可以得到的最高水平的展示。当然还有更多,但您会在学习 Struts 时发现它们。

    至于validator-rules.xmlvalidation.xml,它们由Validator 框架使用,您可以通过使用插件integrate with Struts(Struts 具有可用于向其中添加新内容的插件)来还向用户的输入添加验证。

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

    祝你好运!

    【讨论】:

      【解决方案2】:
      1. 当用户提交了一个jsp页面。该页面具有(属性 )action="login.do"。容器将调用web.xml。在那里面 web.xml有两段servlet和servlet映射
      2. 在 servlet 映射中,它在 url 模式中找到 *.do。如果发现 取 servlet 的名称。并检查相应的类。在里面 小服务程序部分。那个班级是ActionServlet
      3. ActionServlet 是 Struts 模块架构的控制器。在 具有服务方法的操作 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/falseinput ="*.jsp" 等这些 r 创建的实例
      2. 然后它会在检查名称之前创建 Form 类实例 动作映射和表单名称是否相同 将创建表单实例
      3. 然后它将转到ActionMapping 实例 ris 是否提及 validate =true/false 如果为 false 则不会执行此步骤 else 它将执行此步骤。
      4. 然后它会创建动作实例
      5. 接下来会取execute方法的四个参数会返回 ActionErrors 实例。如果它不为空。它将进入错误页面 否则它将到达相应的页面。否则,如果它是空的 if会更进一步,在jsp中显示页面对应的值 视图。这是 struts 流程。

      【讨论】:

      • @Tiny 我猜 PrepareAndExecuteFilter 是新的 actionservlet.. 对吗?如果是这样,它什么时候被调用/调用/初始化?
      【解决方案3】:

      型号


      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 example

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-21
        • 2018-11-20
        • 2011-02-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多