在学习使用struts的过程中自己也是实际用idea操作Action后台获取表单数据三种方式,这里记录一下。
一、使用ActionContext类获取(系统推荐):
jsp页面代码:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/form1.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="提交"/><br/>
</form>
</body>
</html>
页面样式:
struts.xml配置:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<package name="demo1" extends="struts-default" namespace="/">
//下面三个action标签配置分别对应三个测试的后台测试类的action路径
<action name="form1" class="action.Form1DemoAction"></action>
<action name="form2" class="action.Form2DemoAction"></action>
<action name="form3" class="action.Form3DemoAction"></action>
</package>
</struts>
后台方法一代码:
public class Form1DemoAction extends ActionSupport {
@Override
public String execute() throws Exception {
//获取ActionContext对象
ActionContext context = ActionContext.getContext();
//调用方法得到表单数据
HttpParameters map = context.getParameters();
Set<String> keys = map.keySet();
for (String key:keys) {
//根据key得到vlaue
Parameter obj = map.get(key);
System.out.println(Arrays.toString(new Parameter[]{obj}));
}
return NONE;
}
}
二、使用ServletActionContext类获取(实际常用)
jsp和其他配置文件与方法1一样即可,这里不再重复。
后台代码:
public class Form2DemoAction extends ActionSupport {
@Override
public String execute() throws Exception {
//使用ServletActionContext获取request对象
HttpServletRequest request = ServletActionContext.getRequest();
//调用request里面的方法得到结果
String username = request.getParameter("username");
String password = request.getParameter("password");
String address = request.getParameter("address");
System.out.println(username+".."+password+".."+address);
return NONE;
}
}
三、使用接口注入(了解)
jsp和其他配置文件与方法1一样即可,这里不再重复。
后台代码:
public class Form3DemoAction extends ActionSupport implements ServletRequestAware {
private HttpServletRequest request;
@Override
public void setServletRequest(HttpServletRequest httpServletRequest) {
this.request = httpServletRequest;
}
@Override
public String execute() throws Exception {
String username = request.getParameter("username");
String password = request.getParameter("password");
String address = request.getParameter("address");
System.out.println(username+".."+password+".."+address);
return NONE;
}
}