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页面中,不需要添加对象名称