Action接收参数的第三种方式是ModelDriven,模型驱动,但这种方式并不常用
struts.xml文件与之前没有变化
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<constant name="struts.devMode" value="true" />
<package name="user" namespace="/user" extends="struts-default">
<action name="user" class="com.demo.struts2.action.UserAction">
<result>
/user_add_success.jsp
</result>
</action>
</package>
</struts>
访问方式与第一种使用属性接收的方式相同
但是UserAction与第二种DomainModel接收参数的方式类似
public class UserAction extends ActionSupport implements ModelDriven<User>{
private User user = new User();
public String add(){
System.out.println("name:" + user.getName() + ", age:" + user.getPassword());
return SUCCESS;
}
@Override
public User getModel() {
return user;
}
}
不同的地方有两点:
1、User对象不再由struts进行创建,而由用户自己new一个新的对象
2、UserAction实现了MedeolDriven接口(使用泛型避免类型转换的麻烦),并且实现了getModel方法将User对象获取
这里强调了MVC的思想
Model:User View:JSP文件 Controller:Action