Struts的基本流程

时间:2011-04-27 18:10:26

标签: struts struts-validation struts-config

我想研究Struts,所以我将从Struts 1开始, 我想知道一般的流程。需要哪些文件?

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

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

3 个答案:

答案 0 :(得分:33)

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

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

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

现在,带有*.do网址格式的服务器上的任何内容都会发送到ActionServlet

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

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

您可以根据需要设置尽可能多的声明,路径x致电XActiony致电YAction等等。

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

ActionForm是Struts框架填充HTML表单数据的bean。您可以使用request.getParameter("foo")等对象来代替formBean.getFoo()

使用ActionActionForm课程中进行处理后,您必须在某个视图中显示结果(顺便说一句,Struts是MVC框架,因此您必须也知道一两件事。

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

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

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

嗯,那就是它可以获得的高度展示。当然还有更多,但你会在学习Struts时发现它们。

对于validator-rules.xmlvalidation.xmlValidator框架使用了integrate with Struts框架,您可以{{3}}使用插件(Struts有插件可以使用添加新内容)以便为用户的输入添加验证。

嗯,就是这样。您可以在网上找到大量有关详细信息的教程,但希望可以帮助您获得更好的开端。

祝你好运!

答案 1 :(得分:8)

  1. 当用户提交jsp页面时。该页面的属性 )action="login.do"。容器将调用web.xml。在那里面 web.xml有两个部分servlet和servlet映射
  2. 在servlet映射中,它在url-pattern中找到*.do。如果发现了 取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个条件。 那种情况总是如此。因为这是虚方法。
  7. 在这种情况下,有6个步骤正在处理

    1. Struts- Config.xml中创建一个动作映射实例。它 将保留动作映射路径,值,类型的所有细节 转发,validation=true/falseinput ="*.jsp"等这些已创建的实例
    2. 然后它将在检查名称之前创建Form类实例 动作映射和表单名称是否重合,如果它相同的话 将创建表单实例
    3. 然后它将转到ActionMapping实例提到或不提供 validate =true/false如果为false,则不会执行此步骤 它将执行此步骤。
    4. 然后它将创建动作实例
    5. 接下来将返回执行方法的四个参数 ActionErrors个实例。如果它不是空的。它将转到错误页面 另外,它将到达相应的页面。否则如果它是空的 如果会更进一步,在jsp中显示相应的页面值 view.This是struts flow。

答案 2 :(得分:-1)

Struts MVC Model

型号


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

查看


1)Form Bean ,它扩展了org.apache.struts.action.ActionForm,在运行时有两种使用方式:

  • 当JSP页面准备要显示的相关HTML表单时,JSP
    页面访问Bean,该Bean包含要放入
    中的值 形成。这些值是从业务逻辑或先前的 用户输入。
  • 从网络浏览器返回用户输入时,bean 验证并保留该输入以供业务逻辑或 (如果验证失败)以供以后重新显示。

2)Struts标记库 ,例如bean,逻辑,html和tile插件

控制器


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

请参见Struts 1.3 example

为便于比较和参考,这里是Struts 2.3演示