Struts2获取表单数据

//获取表单数据


表单中获取路径 ${pageContext.request.contextPath}/form1.action


extends ActionSupport
AactionContext类
AactionContext context = actionContext.getContext();
Map<String ,Object> map = context.getParameters();
Set<String> key=map.keySet();
for(String key:keys){
Object[] obj = (Object[]) map.get(key);
System.out.println(Arrays.toString(obj));
}

SerVletActionContext类
static HttpServletRequest getRequest();
//获取Request对象
HttpServletRequest request = SerVletActionContext.getRequest();
//得到结果
String username = request.getParameter("username");
String password = request.getParameter("password");
//输出
System.out.println(username);

//使用接口注入方式
private HttpServletRequest request;
implements ServletRequestAware
public void SetServletRequest(HttpServletRequest request){
this.request=request;
}
request.getParameter();



//在action中操作域对象
request  session  servletContext
//使用servletContext操作域对象

request
HttpServletRequest request = SerVletActionContext.getRequest();
request.setAttribute("req","reqValue");

session
HttpSession session = request.getSession();
session.setAttribute("sess","sessValue");

ServletContext
ServletContext context = ServletActionContext.getServletContext();
context.setAttribute("contextname","contextValue");

//struts2数据封装
// Struts2提供获取表单数据方式
// 使用原始方式获取表单数据封装到实体类对象
public class User{
private String name;
private String password;
get和set方法
}

//使用 ServletActionContext 获取表单数据封装到实体类对象里面
Action 类中
public String Execute(){
HttpServletRequest request = SerVletActionContext.getRequest();
String username = request.getParameter("username");
....
}

封装到实体类对象里面
User user = new User();
user.setUsername(username);
user.setPassword(password);
System.out.println(user);

//属性封装
// 直接把表单属性封装到 Action 的属性中
// 变量名和表单的 name 一样
// 生成get和set方法
// 在 action 类中:
private String username;
private String password;
....
// set 和 get 方法
execute(){
System.out.println(username+","+password);
}
//使用属性封装获取表单数据到属性里面,不能把数据直接封装到实体类对象里面



//模型驱动封装
//   可以把表单数据封装到实体类里面
action 实现接口 ModeDriven
action类中:
implements ModelDriven<User>{
private User user=new USer();
public User getModel(){
return user;
}
}
实现接口里面的方法 getModel 方法
在 action 里面创建实体类对象
//注意问题:不能同时使用属性封装和模型驱动封装获取同一个表单数据
//如果同时使用,只执行模型驱动封装


//表达式封装
//实现过程
使用表达式可以把表单数据封装到实体类对象中
在 action 中声明实体类
在 action 中:
private User user;
//生成set和get方法
生成实体类变量的set 和 get 方法

在表单输入项name属性值里边写表达式形式
name = "user.username"
password = "user.password"
....

封装到集合里面
封装到list集合中
页面中:name = "list[0].name"   list[0]表示得到集合中第一个user对象
....
在action中声明list
在action中:
private List<User> list;
//生成get和set方法
生成list变量的set和get方法

在表单输入项里面写表达式
name = "list[0].name"
....


封装到map集合中
页面中:name = "map{'key'}.username"
....
实现步骤
声明map集合
在action中:
private Map<String ,User> map;
//生成get和set方法

在表单输入项name属性值里边写表达式形式
设置key的值map['key值']
设置value值
name = "map{'key'}.username"
....



result中的type属性:
默认值 dispatcher 转发到页面
redirect 重定向到页面

chain 转发到action
redirectAction 重定向到action




猜你喜欢

转载自blog.csdn.net/weixin_40360970/article/details/80029779
今日推荐