我是靠谱客的博主 温柔钢笔,最近开发中收集的这篇文章主要介绍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的属性里面

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

②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.在表单输入项里写表达式

<!-- 封装数据到Map集合 -->
<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>

 

最后

以上就是温柔钢笔为你收集整理的Struts2接收表单数据的方式的全部内容,希望文章能够帮你解决Struts2接收表单数据的方式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部