- 表单数据的获取有三种方式,分别是使用ActionContext类获取、使用ServletActionContext类获取、使用接口获取。
使用ActionContext类获取
首先我们需要写一个Action,并且让他继承ActionSupport,因为我们之前学过,在传值的时候,使用继承ActionContext比较多。然后我们还需要配置Struts.xml文件,重点是别忘了写前端页面。
- 第一步,来看struts.xml的配置:
<!-- 获取表单提交数据 -->
<package name="demo2" namespace="/" extends="struts-default">
<action name="from1" class="com.xuman.from.from1"></action>
</package>
- 第二步,来看前端页面的代码:
<body>
<form action="${pageContext.request.contextPath}/from1.action" method="post">
username:<input type="text" name="usrename"><br>
password:<input type="text" name="password"><br>
address:<input type="text" name="address"><br>
<input type="submit" value="提交">
</form>
</body>
- 第三步,来看Action里面的代码:
package com.xuman.from;
import java.util.Arrays;
import java.util.Map;
import java.util.Set;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class from1 extends ActionSupport {
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
//第一种方式使用ActionContext类获取
//1、获取ActionContext对象
ActionContext context = ActionContext.getContext();
//2、调用方法得到表单的数据
//key是表单输入项name属性值,value是输入的值
Map<String, Object> map = context.getParameters();
Set<String> keySet = map.keySet();
for(String key : keySet){
//根据key得到value
//数组形式:因为输入项里面可能有复选框情况
Object[] objects = (Object[]) map.get(key);
System.out.println(Arrays.toString(objects));
}
return NONE;
}
}
在这里我并没有写提交的页面,但是我在Action里面让他输入了数据,结果如下:


使用ServletActionContext类获取
- 第一步,同样是先创建一个Action,并且配置:
package com.xuman.from;
import java.util.Arrays;
import java.util.Map;
import java.util.Set;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class from2 extends ActionSupport {
@Override
public String execute() throws Exception {
//第二种方式使用ServletActionContext类获取
//1使用ServletActionContext获取request对象
HttpServletRequest request = ServletActionContext.getRequest();
//2调用request里面的方法得到结果
String username = request.getParameter("username");
String password = request.getParameter("password");
String address = request.getParameter("address");
System.out.println(username+password+address);
return NONE;
}
}
- 第二步,前端页面的代码:
<body>
<form action="${pageContext.request.contextPath}/from2.action" method="post">
username:<input type="text" name="username"><br>
password:<input type="text" name="password"><br>
address:<input type="text" name="address"><br>
<input type="submit" value="提交">
</form>
</body>
- 第三步,配置struts.xml:
<package name="demo3" namespace="/" extends="struts-default">
<action name="from2" class="com.xuman.from.from2">
<result name="none">/doudou.jsp</result>
</action>
</package>
输入结果如下:


使用接口获取(了解就好)

在action中获取域对象:

网友评论