Struts2-----Action的定义方法------接收用户提交数据

Action的定义方法:     模型,多实例单线程 

    1、不实现任何接口,不继承任何类(Object)    体现了Struts2框架的轻侵入性

        public class MyAction{
            public String execute()throws Exception{ } 方法签名不能有任何修改
        }
        
    2、实现Action你接口
         5大常量
            ERROR执行出错,跳转到错误处理页
            INPUT跳转输入页
            NONE执行没有任何问题,但是不跳转任何页面
            SUCCESS执行正常,跳转到成功页
            LOGIN跳转到登录页面
        1个抽象方法
            execute()
            
    3、继承ActionSupport,推荐使用
        支持Action接口,所以5大常量可以直接使用
        支持服务器端数据校验
            .addFieldError  addActionError
        支持国际化和本地化处理
        
    为了实现类内高内聚,类间弱耦合,所以可以将一个实体的相关CRUD定义在一个Action类
        自定义方法名,但是签名必须和execute类似,例如  public String add()throws Exception{}
        
        配置:
            <action name="user_*" class="com.yan.UserAction" method="{1}">
                *可以指代任意长度的任意字符,可以匹配user_add user_del user_detail...
                {1}表示和*匹配的具体内容,例如匹配user_add则{1}表示add
                
            特殊定义<action name="*_*" class="com.yan.{1}Action" method="{2}">
                例如User_add.action第一个*表示User,第二个*表示add,则这个配置实际上就成了
                <action name="User_add" class="com.yan.UserAction" method="add">
                这里注意User受字母大写
                
            特殊定义<action name="*">如果没有定义class属性,则默认class是ActionSupport,*可以匹配任何内容
                <action name="*">
                    <result>/{1}.jsp  表示使用abc.action不需要额外定义对应的Action类,直接跳转到同名的jsp
                    
                            
Action如何接收用户提交数据
    1、属性驱动
        页面<input name="username"/>
        Action类  private String username;  属性名称和提交参数的名称一致
            如果需要则自动进行类型转换,如果转换失败则自动跳转input进行报错
            
    2、模型驱动,实现一个ModelDriven接口
        public class UserAction extends ActionSupport implements ModelDriven<UserBean> {
            private UserBean user=new UserBean();没有对应的get/set方法    
            public UserBean getModel() {
                return user;
            }
        }
        页面<input name="username"/>  username对应user中的username属性
            页面输入域名称对应模型中的属性名即可
            
    3、对象驱动   严格来说这不是struts2提供的功能,是OGNL提供的功能
        public class UserAction extends ActionSupport {
            private UserBean user=new UserBean();//可以new也可以不new,这里需要get/set方法
            
        提交数据时应该为"对象名称.属性名"的方式,例如user.username=zhangsan&user.password=123456    

猜你喜欢

转载自blog.csdn.net/seamon_love/article/details/81088451