Struts2中提交表单使用request和respone最常用的方式与简单数组、复杂数组还有Map赋值。
一、ServletActionContext()获取request和respone
最常用的方式,其他和Servlet中的用法一样,代码如下:
1 HttpServletRequest request = ServletActionContext.getRequest(); 2 HttpServletResponse response = ServletActionContext.getResponse();
注意:以上方法需要写在Action类中。
二、使用普通数组、复杂数组、Map赋值操作
(1)使用普通数组,Action类和前台的代码分别如下:
1 private String[] list; 2 3 public void setList(String[] list) { 4 this.list = list; 5 } 6 7 public String[] getList() { 8 return list; 9 } 10 11 @Override 12 public String execute() throws Exception { 13 ServletActionContext.getResponse().setContentType("text/html;charset=utf-8"); 14 ServletActionContext.getResponse().getWriter().println(Arrays.asList(list)); 15 return NONE; 16 }
1 <form action="${pageContext.request.contextPath}/userAdd" method="get"> 2 <input type="text" name="list" value="张三"> 3 <input type="text" name="list" value="李四"> 4 <button>添加</button> 5 </form>
结果为[张三, 李四]
(2)使用复杂一点的数组,这次我们给List传入一个封装好的User,代码如下:
1 public class User { 2 private String userName; 3 private String userPwd; 4 5 public void setUserName(String userName) { 6 this.userName = userName; 7 } 8 9 public void setUserPwd(String userPwd) { 10 this.userPwd = userPwd; 11 } 12 13 public String getUserName() { 14 return userName; 15 } 16 17 public String getUserPwd() { 18 return userPwd; 19 } 20 public String toString(){ 21 return "[userName:"+getUserName()+",userPwd:"+getUserPwd()+"]"; 22 } 23 }
然后在Action类创建一个List,修改一下前台的代码
1 private List<User> user; 2 3 public List<User> getUser() { 4 return user; 5 } 6 7 public void setUser(List<User> user) { 8 this.user = user; 9 } 10 11 @Override 12 public String execute() throws Exception { 13 ServletActionContext.getResponse().setContentType("text/html;charset=utf-8"); 14 ServletActionContext.getResponse().getWriter().println(Arrays.asList(user)); 15 return NONE; 16 }
1 <form action="${pageContext.request.contextPath}/userAdd" method="get"> 2 <input type="text" name="user[0].userName" value="张三"> 3 <input type="text" name="user[0].userPwd" value="123三"> 4 <input type="text" name="user[1].userName" value="李四"> 5 <input type="text" name="user[1].userPwd" value="123四"> 6 <button>添加</button> 7 </form>
结果为[[[userName:张三,userPwd:123三], [userName:李四,userPwd:123四]]]
(4)使用Map将User添加进去,并添加键值,代码如下
1 private Map<String,User> map; 2 3 public Map<String, User> getMap() { 4 return map; 5 } 6 7 public void setMap(Map<String, User> map) { 8 this.map = map; 9 } 10 @Override 11 public String execute() throws Exception {14 ServletActionContext.getResponse().setContentType("text/html;charset=utf-8"); 15 ServletActionContext.getResponse().getWriter().println(Arrays.asList(map)); 16 return NONE; 17 }
1 <form action="${pageContext.request.contextPath}/userAdd" method="get"> 2 <input type="text" name="map['a'].userName" value="张三"> 3 <input type="text" name="map['a'].userPwd" value="123三"> 4 <input type="text" name="map['b'].userName" value="李四"> 5 <input type="text" name="map['b'].userPwd" value="123四"> 6 <button>添加</button> 7 </form>
结果为[{a=[userName:张三,userPwd:123三], b=[userName:李四,userPwd:123四]}]
最后总结一下,在Struts2中,数组的赋值在Action里面的写法都大同小异,需要注意的是前台的代码写的方式不一样。(Struts2学习笔记)
--2019.7.4 我在冬天,赌的是下一次春天
因上努力,果上随缘