Struts框架(一)

 

struts框架流程

 1.客户端向服务器发送请求。通过截取url中的字符串,到ActionMappping中查找相应的Action。通过读取配置文件,找到具体应该实例化的Action对象。

 2.在配置文件中找到此Action对应的ActionForm实例。如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存在ActionFrom对象中。
 3.根据配置信息决定是否需要表单验证。如果需要验证,就调用ActionForm的validate()方法。
 4.如果ActionForm的validate()方法返回null或返回一个不包含ActionMessage的ActionErrors对象,就表示表单验证成功。
 5.ActionServlet根据ActionMapping实例包含的映射信息决定将请求转发给哪个Action。如果相应的Action实例不存在,就先创建这个实例,然后调用Action的execute()方法。
 6.Action的execute()方法返回一个ActionForward对象,ActionServlet再把客户请求转发给ActionForward对象指向的JSP组件。
 7.ActionForward对象指向的JSP组件生成动态网页,返回给客户。

Struts框架组件:ActionServlet

        1.ActionServlet类控制导航流。

        2.ActionServlet根据URL来决定哪个Action类被用于处理请求,Action可以校验输入,并访问业务层一以便从数据库检索信息

        3.Action需要知道页面提交了哪些内容,所以由ActionServlet根据请求URL来决定将请求参数绑定到哪个ActionForm中,并传入Action

        4.Action在完成业务逻辑后,返回一个ActionForward对象,ActionServlet根据ActionForward对象中的路径来调用页面完成响应。

        5.Struts将这些信息绑定在一个ActionMapping对象中,一个ActionMapping对应一个URL。当请求路径到达的时候,ActionServlet就会查询ActionMapping对象,ActionMapping对象将高速ActionServlet哪个Action类会被调用,哪个ActionFor类被用于传递页面数据以及哪些ActionForward将被用于转向。

        6.dispatchAction避免每个Action创建一个类。添加parameter属性到Action的配置,通过他来确定到底调用的是哪个方法。如果parameter没有值,则调用unspecified方法。需注意parameter参数值不能是execute和perform

<action path="/saveSubscription"         type="org.apache.struts.actions.DispatchAction"        name="subscriptionForm" scope="request" input="/subscription.jsp"            parameter="method"/>


         通过界面层传过来的method的值,来确定调用哪个方法。如method="add",则调用add方法。    

 

Struts涉及到的对象

  •         ActionForm:1)必须扩展自org.apache.struts.action.ActionForm.2)如果要获取表单的值,必须定义一个public属性。3)如果要求在将ActionForm传递到Action之前进行校验,必须实现validate方法。4)如果要在组装前初始化属性,必须实现reset方法。
<form-bean name="FormBean的名称" type="FormBean对应JavaBean类的全路径"/>

  <form-bean name="UserForm"

              type="com.amigo.struts.form.user.UserForm" />


 

                    UserForm类的实现为

 public class UserForm extends ActionForm { 

      private static final long serialVersionUID = 1L;

      /** 用户名.*/ 

     private String userName;

     /** 密码. */ 

     private String password;

     public String getPassword() { return password; } 

     public void setPassword(String password) { this.password = password; } 

     public String getUserName() { return userName; } 

     public void setUserName(String userName) { this.userName = userName; }}


 

                动态form-bean:1)不需要定义对应的javabean类,其元素都在struts-config.xml中定义。其type为:org.apache.struts.validator.DynaValidatorForm。2)动态ActionForm可以减少静态ActionForm的数量,使用动态ActionForm完全可以获得静态ActionForm所有的功能。3)动态ActionForm其实是把页面中的html元素的名字和值放到了map中,所以通过get方法可以取出相应的值4)动态ActionForm采用EL表达式的输出方式${dynabean.map.prop}, 4)动态ActionForm的验证,通常使用动态验证框架validator

 

         下面的动态FormBean定义了userName和password属性,配置如下:

<form-bean name="UserForm" type="org.apache.struts.validator.DynaValidatorForm">

             <form-property name="userName" type="java.lang.String"/>

             <form-property name="password" type="java.lang.String"/>

</form-bean>



         在Action中使用动态

ActionFormDynaActionForm daf = (DynaActionForm)form;

String username = (String)daf.get("username");

String password= (String)daf.get("password");


 

  •         ActionMapping:
  •         ActionForward

Struts标签库的配置和使用。1)一些简单的使用语句  2)配置国际化支持

异常处理

Struts validator验证框架

 

 

 

 

        

posted @ 2012-03-19 16:29  转航  阅读(214)  评论(0编辑  收藏  举报