Action实现及属性驱动和模型驱动

Action类的实现方式
  • 定义一个pojo类(简单的JavaBean)

    public class PojoAction {
        public String execute() {
            System.out.println("pojo action");
            return "success";
        }
    }
    • 自定义一个普通的java类,不具有侵入性,便于更改
  • 实现Action接口

    public class InterfaceAction implements Action{
        @Override
        public String execute() throws Exception {
            System.out.println("interface action");
            return SUCCESS;
        }
    }
    • 使编写的代码更加规范
  • 继承ActionSupport类

    public class ExtendsAction extends ActionSupport{
        @Override
        public String execute() {
            System.out.println("extends action");
            return SUCCESS;
        }
    }
    • 可以继承一些ActionSupport所实现的功能(例如:验证)
    • 官方推荐使用

表单处理
  • 属性驱动

    • jsp页面

      <form action="register.action" method="post">
          username:<input type="text" name="user.name"/>
          password:<input type="password" name="user.pwd"/>
          age:<input type="text" name="user.age"/>
          email:<input type="text" name="user.email"/>
          <input type="submit" value="submit"/>
      </form>
    • Action

      public class UserAction {
          private User user; // 自定义的User类型对象,包含name,pwd,age,email
      
          public String register() {
              System.out.println(user);
              return Action.SUCCESS;
          }
      
          public User getUser() {
              return user;
          }
      
          public void setUser(User user) {
              this.user = user;
          }
      }
      • 不需要实例化对象
      • jsp页面中,属性前需要加上对象名称
  • 模型驱动

    • jsp页面

      <form action="regDriven.action" method="post">
          username:<input type="text" name="name"/>
          password:<input type="password" name="pwd"/>
          age:<input type="text" name="age"/>
          email:<input type="text" name="email"/>
          <input type="submit" value="submit"/>
      </form>
    • Action代码

      public class UserDrivenAction implements ModelDriven<User>{
          private User user = new User(); 
          public String register() {
              System.out.println(user);
              return Action.SUCCESS;
          }   
          @Override
          public User getModel() {
              return user;
          }
          public User getUser() {
              return user;
          }
          public void setUser(User user) {
              this.user = user;
          }
      }
      • 由ModelDrivenIntercepter拦截器完成赋值
      • 需要实现ModelDriven接口,并且使用范型
      • 实现getModel()方法,返回创建的对象实例
      • jsp页面中,不需要添加对象名称

猜你喜欢

转载自blog.csdn.net/weixin_40683252/article/details/81023674