示例表单:
<form action="${pageContext.request.contextPath}/call" method="post">
用户名:<input type="text" name="uname"><br/>
时限:<input type="text" name="utime"><br/>
地点:<input type="text" name="uaddr"><br/>
<input type="submit" value="提交"><br/>
</form>
配置信息:
<package name="demo" namespace="/" extends="struts-default">
<action name="call" class="cn.struts.demo.getInformation" method="recall"></action>
</package>
Action类:
ActionContext获取
(1).创建继承ActionSupport的类
(2).获取ActionContext对象
(3).调用对象中的方法,获取表单数据
*HttpParameters是Struts 2提供的类型,与Map类似,按key-value的键值对存取。
*ActionContext对象提供的getParameters方法与servlet提供的有区别,注意区分。
public class getInformation extends ActionSupport {
public String recall(){
ActionContext context=ActionContext.getContext();//获取对象
HttpParameters map = context.getParameters(); //获取表单数据
Set<String> keys=map.keySet();
for(String key:keys){ //测试是否获取成功
Parameter obj=map.get(key);
System.out.println(key+":"+obj);
}
return NONE;
}
}
ServletActionContext获取
(1).创建继承ActionSupport的类
(2).使用ServletActionContext获取request对象
*HttpServletRequest类型由Servlet提供,需要另外导入包(可用tomcat中提供的servlet-api,在file>>project structure>>libraries>>+class)
(3).调用request中的方法获取表单信息
public class getInformation extends ActionSupport {
public String recall(){
HttpServletRequest request= ServletActionContext.getRequest(); //获取对象
String name=request.getParameter("uname"); //获取表单数据
String time=request.getParameter("utime");
String adress=request.getParameter("uaddr");
System.out.println(name+" "+time+" "+adress); //测试是否获取成功
return NONE;
}
}
使用接口注入获取
(1).创建实现ServletRequestAware接口的类
*如果此处类不继承ActionSupport则无法return NONE
(2).实现接口的方法(得到request对象)
(3).调用request方法获取表单信息
public class getInformation implements ServletRequestAware { //调用接口
private HttpServletRequest request;
@Override //实现接口的方法
public void setServletRequest(HttpServletRequest request) { //获取对象
this.request=request;
}
public String recall(){
String name=request.getParameter("uname"); //获取表单信息
String time=request.getParameter("utime");
String adress=request.getParameter("uaddr");
System.out.println(name+" "+time+" "+adress);
return "success";
}
}