在项目开发过程中,很多时候需要同时提交多条数据到服务器,例如在客户端要同时将下表中姓名,年龄,职位等信息同时提交到服务器,实现批量添加。
姓名 | 年龄 | 职位 |
张三 | 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);//得到保存了客户端数据的对象
}
再保存即可。
相关推荐
当我们需要在客户端提交多行数据时,通常会利用表单来收集信息,然后将这些数据传递到服务器端的ActionForm。这个过程涉及到如何将客户端的数据组织成一个集合,如List,并将其绑定到ActionForm的属性上。在本篇中,...
在服务器端,Struts2 Action会接收到这个请求,然后使用Apache Commons FileUpload库(由于压缩包中没有包含,你需要自行添加)来解析请求体中的文件数据。FileUpload库可以帮助你方便地处理多个上传文件,包括读取...
在这个系统中,分为服务器端和客户端两个部分,分别负责数据处理和服务交互。 **Spring框架**是核心的依赖注入(DI)容器,它负责管理应用中的对象及其依赖关系。Spring提供了事务管理、AOP(面向切面编程)、MVC...
Struts2是Java Web开发中的一款流行MVC框架,它负责处理来自客户端的请求,执行业务逻辑,并返回响应。在图片上传的流程中,Struts2接收Uploadify发送的文件,将其保存在服务器的指定位置,并可能执行一些验证和处理...
5. **集成Struts2插件**:Struts2社区提供了验证码插件,如`struts2-convention-plugin`和`struts2-jquery-plugin`,它们简化了验证码的实现。开发者可以根据需求选择合适的插件,快速集成验证码功能。 在实际开发...
2. **生成验证码**:在服务器端,插件会创建一个JCaptcha对象,生成一个唯一的验证码字符串并将其保存在session中,同时将对应的图像输出到客户端。 3. **前端展示**:在HTML表单中,需要添加一个图像标签来显示...
3. **整合Struts2和DWR**:在Struts2的Action中使用DWR的方法,使服务器端的数据可以直接传递到客户端,更新页面。通常,DWR的回调函数会在Action执行完毕后触发。 **应用场景**: 这种整合方式常用于开发需要复杂...
3. Struts2中的Action类接收到文件数据,将其保存到服务器指定位置,并返回确认信息。 4. SWFUpload接收到确认信息后,完成整个上传过程,更新用户界面状态。 三、Struts2中配置SWFUpload 1. 引入依赖:首先,需要...
对于使用Eclipse作为开发环境的Java开发者来说,创建这样一个服务器端架构涉及到多个关键知识点。以下将详细阐述这些内容。 1. **服务器框架选择**:在Eclipse中,我们通常会选用Spring Boot或者Struts2等成熟的...
当用户提交表单时,Struts2会将输入框中的验证码与服务器端生成的验证码进行比较。如果匹配,验证通过,否则返回错误信息提示用户重新输入。 通过以上步骤,Struts2框架能够提供一个完整的验证码解决方案,确保了...
开发者可以在JSP页面中编写Java代码,这些代码在服务器端执行并返回结果到客户端。JSP的核心概念包括指令(Directives)、动作(Actions)和脚本元素(Scripting Elements),它们共同构建了JSP的灵活性和功能。 **...
总结来说,实现"web上传进度条"(Struts2+Spring)需要结合服务器端的异步处理、Ajax通信、前端的进度条显示以及文件上传的安全控制。这个过程涉及到了Web开发的多个层面,包括后端处理、前端交互和安全策略,为用户...
- **Multipart解析**:由于Plupload默认使用multipart/form-data格式发送文件,因此服务器端需要能够解析这种格式的数据。Spring MVC、Struts2等框架提供了内置的支持。 3. **配置与定制** - **初始化配置**:在...
首先,JSP是Java的一种动态网页技术,允许开发者将Java代码嵌入到HTML页面中,实现了服务器端的动态渲染。JSP的主要职责在于处理用户请求,生成动态内容,并将其返回给客户端。在本系统中,JSP用于展示学生信息、...
总结来说,基于Struts1.x的验证码实现是Web开发中的重要环节,它涉及到服务器端的生成、存储、验证,以及客户端的显示和用户交互。通过合理的验证码设计和实现,可以显著提高Web应用程序的安全性,保护用户的账户不...
5. **错误处理**:对于可能出现的错误,如文件过大、文件类型不合法等,需要在客户端和服务器端进行适当的处理。在uploadify的配置中,可以通过设置各种事件处理器来处理错误。 6. **响应处理**:当文件上传成功后...
用户提交包含文件的表单后,服务器端的Action会接收到文件数据并进行处理。然而,这部分内容在提供的代码中并未涉及,因此我们不深入讨论上传部分。 下载文件则涉及服务器向客户端发送文件内容的过程。在提供的`...
在Struts框架中,文件下载是一项常见的功能,它允许用户从服务器端获取并保存文件到本地计算机。在本文中,我们将深入探讨如何实现一个简单的Struts文件下载功能,并理解其核心概念。 首先,创建一个新的Web工程是...