1 属性驱动
web.xml配置类似,可查看上一篇文章中web.xml的配置
Struts.xml配置:
<struts>
<package name="user" extends="struts-default">
<action name="register" class="cn.sxt.action.UserAction" method="register">
<result name="success">/show.jsp</result>
</action>
</package>
</struts>
对应的处理请求类:
public class UserAction {
//表单中的各个数据通过name属性与实体类中的属性一一映射
private User user;
//请求处理方法
public String register(){
System.out.println(user);//输出一个对象,包含对象中的变量 ,调用toString方法
return Action.SUCCESS;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
页面:
<body>
<form action="register.action" method="post">
用户名:<input type="text" name="user.name"/><br>
密码:<input type="password" name="user.pwd"/><br>
年龄:<input type="text" name="user.age"/><br>
邮箱:<input type="text" name="user.email"/><br>
<input type="submit" value="提交"/><br>
</form>
</body>
属性数据驱动通过name属性映射到实体类中开完成数据从前台页面到后台的传输。
2 模型驱动
使用模型驱动需要添加Model Driven Interceptor拦截器,由于该拦截器是在struts-default.xml中默认配置了的,只需要在package中继承属性声明继承struts-default即可。
struts.xml
<struts>
<package name="user" extends="struts-default">
<action name="regModel" class="cn.sxt.action.UserModelAction" method="register">
<result name="success">/show.jsp</result>
</action>
</package>
</struts>
请求处理类:
public class UserModelAction implements ModelDriven<User>{
private User user=new User();
public String register(){
System.out.println(user);
return Action.SUCCESS;
}
@Override
public User getModel() {
// TODO Auto-generated method stub
return user;
}
}
页面:
<body>
<form action="regModel.action" method="post">
用户名:<input type="text" name="name"/><br>
密码:<input type="password" name="pwd"/><br>
年龄:<input type="text" name="age"/><br>
邮箱:<input type="text" name="email"/><br>
<input type="submit" value="提交"/><br>
</form>
</body>
不管是属性驱动还是页面驱动,通过Form表单提交的数据均映射到后台实体类中。单属性个数比较多是采用模型驱动,而比较少的时候适合用属性驱动。