1、以对象方式获取表单数据
(1)创建一个User的JavaBean:
public class User {
private String password;
private Integer userage;
private String username;
public Integer getUserage() {
return userage;
}
public void setUserage(Integer userage) {
this.userage = userage;
}
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;
}
@Override
public String toString() {
return "User{" +
"password='" + password + '\'' +
", userage=" + userage +
", username='" + username + '\'' +
'}';
}
}
(2)创建一个表单用于收集用户的信息:
<body>
<form action="${pageContext.request.contextPath}/h/Action">
用户名:<input type="text" name="user.username"/><br>
密码:<input type="password" name="user.password"/><br>
年龄:<input type="text" name="user.userage"/><br>
<input type="submit" value="提交"/>
</form>
</body>
(3)struts.xml配置文件:
<struts>
<package name="hello" namespace="/h" extends="struts-default">
<action name="Action" class="pers.zhb.hello.Action" method="execute">
<result name="success" type="dispatcher">/form.jsp</result>
</action>
</package>
</struts>
(4)书写Action类,获取表单提交的数据:
public class Action extends ActionSupport{
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public String execute(){
System.out.println("用户的信息为:"+user.toString());
System.out.println("用户名为:"+user.getUsername());
System.out.println("密码为:"+user.getPassword());
System.out.println("年龄为:"+user.getUserage());
return "success";
}
}
(5)测试结果:
表单数据:
Action获取到的数据:
2、模型驱动的方式提交数据
(1)创建User的JavaBean
(2)创建表单:
<body>
<form action="${pageContext.request.contextPath}/h/Action">
用户名:<input type="text" name="username"/><br>
密码:<input type="password" name="password"/><br>
年龄:<input type="text" name="userage"/><br>
<input type="submit" value="提交"/>
</form>
</body>
与以对象的方式提交相比name属性有变化。
(3)配置struts.xml配置文件
(4)书写Action类:
public class Action extends ActionSupport implements ModelDriven<User> {
private User user=new User();
public String execute(){
System.out.println("用户的信息为:"+user.toString());
System.out.println("用户的用户名为:"+user.getUsername());
System.out.println("用户的密码为:"+user.getPassword());
System.out.println("用户的年龄为:"+user.getUserage());
return null;
}
@Override
public User getModel() {
return user;
}
}
这里需要实现一个接口。
(5)测试:
向表单输入数据:
控制台打印Action获取的数据:
缺点:模型驱动的方式每一个Action只能获取到一个对象。
3、List集合方式
(1)表单:
<form action="${pageContext.request.contextPath}/h/Action">
<input type="text" name="list"/><br>
<input type="text" name="list[3]"/><br>
<input type="submit" value="提交"/>
</form>
(2)Action类:
public class Action extends ActionSupport{
private List<String> list;
public List<String> getList() {
return list;
}
public void setList(List<String> list) {
this.list = list;
}
public String execute(){
System.out.println(list);
return null;
}
}
(3)测试:
可以指定数据在list集合中的位置。
4、Map集合方式
(1)表单:
<form action="${pageContext.request.contextPath}/h/Action">
<input type="text" name="map['zhai']"/><br>
<input type="submit" value="提交"/>
</form>
表单必须指定提交的键,该键以提交的数据成为键值对。
(2)Action:
public class Action extends ActionSupport{
private Map<String,String> map;
public Map<String, String> getMap() {
return map;
}
public void setMap(Map<String, String> map) {
this.map = map;
}
public String execute(){
System.out.println(map);
return null;
}
}
(3)测试: