方法一:struts2对ModelDriven模式的支持(模型驱动模式)
Struts2可以采用类似于Struts1中的ActionForm方式收集数据,这样方式叫ModelDriven模式
Action需要实现ModelDriven接口,实现getModel()方法,返回Bean对象,这样struts2会通过getModel()方法拿到对象,使用set方法把数据填充到对象中
创建User类(Bean对象,包含geter方法和seter方法的纯java类)
User类
package com.djoker.struts2; public class User { private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
LoginAction类
package com.djoker.struts2; import com.opensymphony.xwork2.ModelDriven; public class LoginAction implements ModelDriven<User>{ private User user = new User(); public String execute() throws Exception { if("admin".equals(user.getUsername()) && "admin".equals(user.getPassword())){ return "success"; } return "error"; } @Override public User getModel() { return user; } }
方法二:在表单域中直接对对象进行赋值(该方法必须把对象分离到单个类中,类似ModelDriven模型驱动模式)
不需要实现ModelDriven接口,是直接操作对象的get和set方法,所以需要提供该对象的set和get方法
Action类
package com.djoker.struts2; public class LoginAction{ private User user; public User getUser() { return user; } public void setUser(User user) { this.user = user; } public String execute() throws Exception { if("admin".equals(user.getUsername()) && "admin".equals(user.getPassword())){ return "success"; } return "error"; } }
jsp页面中的form表单书写方式
<form action="login.action" method="post"> 用户名:<input type="text" name="user.username"><br> 密 码:<input type="password" name="user.password"><br> <input type="submit" value="登录"> </form>