Struts2接收表单数据的方式

方式1. 使用原始方式获取表单数据封装到实体类对象

login.jsp

<html>
  <head>
    <title>登陆页面</title>
  </head>
  <body>
    <form action="test/login" method="post">
        用户:<input type="text" name="username"/><br>
        密码:<input type="password" name="password"/><br>
        地址:<input type="text" name="address"/><br>
        <input type="submit" value="登陆"/>
    </form>
  </body>
</html>

使用ServletActionContext获取表单数据并封装到实体类对象里面

public class LoginAction {
    public String execute() throws Exception {
        // 1.获取表单数据
        HttpServletRequest request = ServletActionContext.getRequest();
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        String address = request.getParameter("address");
        // 2.封装到实体类对象里面
        User user = new User();
        user.setUsername(username);
        user.setPassword(password);
        user.setAddress(address);
        return NONE;
    }
}

方式2. 属性驱动

  在Struts2中,可以直接在Action中定义各种Java基本数据类型的字段,使这些字段与表单数据相对应,并利用这些字段进行数据传递。

①直接把表单提交属性封装到action的属性里面

<form action="demo1.action" method="post" >
    username<input type="text" name="username"><!-- name要和服务端属性名称一样 -->
    password<input type="text" name="password"><!-- name要和服务端属性名称一样 -->
    <input type="submit">
</form>

②Action:注意要继承ActionSupport类

public class Damo1Action extends ActionSupport {
    private String username;//属性名称和表单name一样
    private String password;//属性名称和表单name一样
    //一定要设置get set方法
    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;
    }
    public String demo(){
        System.out.println(username+"\n"+password);//即可直接获取值
        return "success";
    }
}

方式3. 模型驱动
使用模型驱动方式,可以直接把表单数据封装到实体类对象里面

①User实体类,属性与前端页面name值一样

public class User {
    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;
    }
    @Override
    public String toString() {
        return "User [username=" + username + ", password=" + password + "]";
    }
    
}

②Action:新建一个实体类对象,注意要实现接口ModelDriven

public class Damo2Action implements ModelDriven<User>{
    //实现接口ModelDriven 并且有个泛型,泛型是实体类对象
    private User user=new User();//new一个全局user对象
    public User getModel() {//获得模型的方法,不需要调用
        return user;//返回user对象
    }
    public String demo(){
        System.out.println(user);//直接显示user
        return "success";
    }
}

方式4. 表达式驱动
①Jsp页面

<body>
	<form action="demo3.action" method="post" >
	username<input type="text" name="user.username">
	<!-- name中的user是实体类对象而不是类名 -->
	password<input type="text" name="user.password">
	<!-- 通过指向不同的实体类对象就可以将一个表单页面中的内容封装到多个对象中 -->
    <input type="submit">
	</form>
</body>

②在Action中声明User实体类对象,并写出对象的get set 方法

public class Damo3Action {
    private User user;
    public User getUser(){
        return user;
    }
    public void setUser(User user){
        this.user=user;
    }
    public String demo(){
        System.out.println(user);//直接显示user
        return "success";
    }
}

封装到List集合里面
1.在action中声明List并生成get和set方法

public class ListAction {
    private List<User> users;
	public List<User> getUsers() {
		return users;
	}
	public void setUsers(List<User> users) {
		this.users = users;
	}
    public String execute(){
        System.out.println(users);
    }
}

2.在表单输入项里写表达式

<!-- 封装数据到List集合 -->
	<form action="${pageContext.request.contextPath}/listDemo.action" method="post">
		<!--list[0]表示list集合中第一个User对象-->
        名称:<input type="text" name="list[0].name"><br>
		年龄:<input type="text" name="list[0].age"><br>
		生日:<input type="text" name="list[0].birthday"><br>
		名称:<input type="text" name="list[1].name"><br>
		年龄:<input type="text" name="list[1].age"><br>
		生日:<input type="text" name="list[1].birthday"><br>
	</form>

封装到Map集合里面
1.在action中声明Map并生成get和set方法

public class MapAction {
    private Map<String,User> users;
	public Map<String,User> getUsers() {
		return users;
	}
	public void setUsers(Map<String,User> users) {
		this.users = users;
	}
    public String execute(){
        System.out.println(users);
    }
}

2.在表单输入项里写表达式

<form action="${pageContext.request.contextPath}/mapDemo.action" method="post">
	<!-- 设置key值map['key值'],value值为表单输入值 -->
	名称:<input type="text" name="map['one'].name"><br>
	年龄:<input type="text" name="map['one'].age"><br>
	生日:<input type="text" name="map['one'].birthday"><br>
	名称:<input type="text" name="map['two'].name"><br>
	年龄:<input type="text" name="map['two'].age"><br>
	生日:<input type="text" name="map['two'].birthday"><br>
</form>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值