1.属性驱动
申明变量,变量名与表单传递过来的相同,设置对应的setter和getter方法即可。
public class LoginAction extends ActionSupport{
private String username;
private String password;
@Override
public String execute() throws Exception {
System.out.println(username);
System.out.println(password);
return "success";
}
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;
}
}
2.模型驱动
不使用Struts2标签的模型驱动
// 实现ModelDriven接口,泛型中写我们封装的数据
public class MloginAction extends ActionSupport implements ModelDriven<User> {
// 必须实例化封装的数据,Struts2会直接使用该类,将数据set进去,所以必须在这个类中写get和set方法
User u = new User();
// 实现此接口必须实现的方法,返回我们封装的数据
@Override
public User getModel() {
return u;
}
@Override
public String execute() throws Exception {
System.out.println(u.getUsername());
System.out.println(u.getPassword());
return "success";
}
}
需要在struts.xml中配置modelDriven拦截器和默认拦截器
<constant name="struts.ui.theme" value="simple" />
<constant name="struts.ui.templateDir" value="template" />
<constant name="struts.ui.templateSuffix" value="ftl" />
<package name="userlogin" extends="struts-default">
<action name="muserlogin" class="com.jikexueyuan.action.MloginAction">
<result name="success">/index.jsp</result>
<interceptor-ref name="modelDriven"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</action>
</package>
</struts>
使用Struts2标签的模型驱动
public class SloginAction extends ActionSupport {
//不用实现ModelDriven接口
private User u;
//Struts2会帮助我们实例化。所以,User里面必须有不带参数的构造方法。
@Override
public String execute() throws Exception {
System.out.println("标签实现");
System.out.println(u.getUsername());
System.out.println(u.getPassword());
return "success";
}
//我们必须写出User的get和set方法
public Users getU() {
return u;
}
public void setU(Users us) {
this.us = u;
}
}
form表单:
<form action="suserlogin" method="post">
<%--注意name属性,必须是我们action中的数据名称.属性名--%>
用户名:<input type="text" name="u.username">
密码:<input type="password" name="u.password">
<input type="submit" value="提交">
</form>
使用了Struts2标签的表单:
<%--这里定位action的方式是和配置struts.xml差不多,使用namespace和action名--%>
<s:form namespace="/userlogin" action="suserlogin" method="post">
<%--注意name属性,同样必须是我们action中的数据名称.属性名--%>
<s:textfield name = "u.username"/>用户名:
<s:password name = "u.password"/>密码:
<s:submit value="提交" />
</s:form>