struts2开发5--从客户端批量提交数据到服务器端

在项目开发过程中,很多时候需要同时提交多条数据到服务器,例如在客户端要同时将下表中姓名,年龄,职位等信息同时提交到服务器,实现批量添加。

姓名    年龄   职位
  张三 2岁 学生
 李四 1岁 学生

这里介绍一种方法供大家参考。具体步骤如下:

第一步:在项目中新建User类,具体代码如下:

package cn.test.Bean;
public class User {
 private String name;//姓名
 private int age;//年龄
 private String position;//职位

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 public int getAge() {
  return age;
 }

 public void setAge(int age) {
  this.age = age;
 }

 public String getPosition() {
  return position;
 }

 public void setPosition(String position) {
  this.position = position;
 }

}

第二步:创建ProlistAction,代码如下:

package cn.test.action;

import java.util.List;

import cn.test.Bean.User;

import com.opensymphony.xwork2.ActionSupport;

public class ProlistAction extends ActionSupport {
 private List<User> prolist;// 泛型对象prolist

 public List<User> getProlist() {
  return prolist;
 }

 public void setProlist(List<User> prolist) {
  this.prolist = prolist;
 }

 public String UseraddUI() throws Exception {
  return "UaddUI";
 }

 @Override
 public String execute() throws Exception {
  // TODO Auto-generated method stub
  if(prolist!=null)
  {
 for(int i=0;i<prolist.size();i++)
 {
  System.out.println(prolist.get(i).getName());
 }
  }
  return "Usuccess";
 }
}
第三步,新建UaddUI.jsp文件,用来显示输入界面:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<style type="text/css">
.addpro{
list-style: none;
width: 800px;
margin: 0 0 0 180
}
.addpro li
{
border: solid thin #cccccc;
list-style: none;
float: left;
width:150px;
text-align: center;
}
</style>
<ul id="h" class="addpro">
  <li style="font-weight: bold;"> 姓名 </li>
  <li style="font-weight: bold;"> 年龄 </li>
  <li style="font-weight: bold;"> 职位</li>
</ul>
<br>
<s:form action="U_execute" theme="simple" cssStyle="margin-top:0px;">
<s:iterator value="new int[3]" status="st">
<ul id="h" class="addpro">
<li><s:textfield name="%{'prolist['+#st.index+'].name'}" size="15"></s:textfield></li>
<li><s:textfield name="%{'prolist['+#st.index+'].age'}" size="15"></s:textfield></li>
<li><s:textfield name="%{'prolist['+#st.index+'].position'}" size="15"></s:textfield></li>
</ul>
</s:iterator>
<s:submit value="确认添加" cssStyle="margin-left:450px;"></s:submit>
</s:form>

关键代码说明:

在上述表单From中,使用struts的iterator 标签来循环输出了三行内容,每行内容表示一个用户的信息。这里要注意的是textfield标签的name属性值。例如name="%{'prolist['+#st.index+'].age}" ,其中'prolist是Action类型的属性名,#st.index是要集合的下表索引,age是泛型集合类型User类中的属性名。

第四步,创建Useccess.jsp,来显示刚添加的信息

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<s:iterator value="prolist" var="pro" status="st">
<s:property value= "#pro.name"/>
<s:property value="#pro.age"/>
<s:property value="#pro.position"/>
</s:iterator>
这里使用iterator标签循环遍历集合对象prolist,使用property 标签 输出该集合元素中的属性。

第五步,配置struts.xml文件

<action name="U_*" class="cn.test.action.ProlistAction" method="{1}">
        <result name="UaddUI">/WEB-INF/jsp/UaddUI.jsp</result>
        <result name="Usuccess">/WEB-INF/jsp/Usuccess.jsp</result>
        </action>

第六步,部署项目,启动tomcat,在浏览器中输入:http://localhost:8080/MyWeb/U_UseraddUI

注意,大家如果要把客户端提高过来的批量数据保存到数据库的话,可以先在Action中把list中的对象全部取出来,再保存到数据库中。

参考实现代码:

for(int i=0;i<prolist.size();i++)
 {
           prolist.get(i);//得到保存了客户端数据的对象
 }

再保存即可。

猜你喜欢

转载自673390302.iteye.com/blog/2291774