如果需要提交的表单内容比较多,一个JSP页面不够用,就需要多个表单依次提交,最后一起汇总给
ActionServlet处理
JSP1页面(其中hidden字段很重要,表示是第一个提交页面)
<html>
<head>
<title>jsp1</title>
</head>
<body bgcolor="#ffffff">
<html:form action="/insertAction.do">
<html:hidden property="page" value="1"/>
name:<html:text property="name"/>
pass:<html:text property="password"/>
<html:submit>submit
</html:submit>
</html:form>
</body>
</html>
JSP2页面
<html>
<head>
<title>jsp2</title>
</head>
<body bgcolor="#ffffff">
<html:form action="/insertAction.do">
<html:hidden property="page" value="2"/>
city:<html:text property="city"/>
<html:submit>submit
</html:submit>
</html:form>
</body>
</html>
为两个页面建立共同的ActionForm,注意,scope要为session
public class InsertForm extends ActionForm ...{
private String name=null;
private String password=null;
private String city=null;
private String page=null;
public ActionErrors validate(ActionMapping actionMapping,
HttpServletRequest
httpServletRequest) ...{
ActionErrors errors=new ActionErrors();
int numpage=0;
try ...{
numpage=new Integer(page).intValue();
} catch (Exception ex) ...{
}
if(numpage==1)...{
if((name==null)||(name.length()<1))...{
errors.add("name",new ActionMessage("123"));
}
if((password==null)||(password.length()<1))...{
errors.add("password",new ActionMessage("123"));
}
}
if(numpage==2)...{
if((city==null)||(city.length()<1))...{
errors.add("city",new ActionMessage("123"));
}
}
return errors;
}
public void reset(ActionMapping actionMapping,
HttpServletRequest servletRequest) ...{
int numpage=0;
try ...{
numpage=new Integer(servletRequest.getParameter
("page")).intValue();
} catch (Exception ex) ...{
}
if(numpage==1)...{
name=null;
password=null;
}
if(numpage==2)...{
city=null;
}
}
public String getCity() ...{
return city;
}
public String getName() ...{
return name;
}
public String getPage() ...{
return page;
}
public String getPassword() ...{
return password;
}
public void setPassword(String password) ...{
this.password = password;
}
public void setPage(String page) ...{
this.page = page;
}
public void setName(String name) ...{
this.name = name;
}
public void setCity(String city) ...{
this.city = city;
}
}
以上是两个html表单都对应I"nsertForm,在创建InsertForm时有以下几点需要注意
(1)提供html表单的隐藏字段page对应的page属性
(2)在reset方法中,只把和当前正在处理的表单相关的属性恢复为默认值
(3)在validate中,仅对和当前表单相关的属性进行验证
Struts-config.xml内容
<struts-config>
<form-beans>
<form-bean name="insertForm" type="untitled2.InsertForm" />
</form-beans>
<action-mappings>
<action input="/jsp1.jsp" name="insertForm"
parameter="/jsp2.jsp" path="/insertAction"
scope="session"
type="org.apache.struts.actions.ForwardAction"
validate="true" />
<action input="/jsp2.jsp" name="insertForm"
path="/insertAction2" scope="session"
type="untitled2.InsertAction2" validate="true" />
</action-mappings>
<message-resources parameter="ApplicationResources" />
</struts-config>
JSP1页面的action为/insertAction.do
JSP2页面的action为/insertAction2.do
分享到:
相关推荐
对于包含列表的表单,用户可能需要在页面上输入多条数据,如一个订单中包含多个商品。每个商品项可能都有自己的属性,如商品ID、名称、数量等。在HTML表单中,这些数据可以通过数组或列表的格式来表示,比如`[0].id...
在实现上,开发者可以在JSP表单页面中使用标签生成唯一的token标识,并在struts.xml文件中配置相应的token拦截器以及invalid.token结果视图。 在配置示例代码中,开发者需要在login.jsp页面中加入<s:token></s:...
在开发Web应用时,防止表单的多次提交是一个常见的需求,这可能导致数据重复或者逻辑错误。Struts2提供了Token插件来解决这个问题,确保每个表单提交只能被执行一次。下面将详细阐述Struts2中Token机制的工作原理、...
综上所述,Struts的表单验证是其功能强大且不可或缺的一部分,它涉及到用户体验、数据安全和应用逻辑等多个方面。通过合理利用Struts提供的工具和机制,开发者可以创建出健壮且用户友好的Web应用。
批量提交是指一次性处理多个数据记录,而不是逐个处理。在Web应用中,这通常涉及到用户上传一个包含多条记录的数据文件,或者通过网页表单一次性输入多条数据。这种处理方式提高了数据处理效率,减少了网络通信次数...
客户端再次提交表单时,会将这个Token一起发送回服务器。服务器验证Token的有效性,如果已经使用过或者不存在,就拒绝处理请求,从而防止重复提交。 三、Struts中实现Token机制的步骤 1. **配置Action** 在Struts...
Struts Token机制是一种防止表单重复提交的有效策略,尤其在处理关键操作时,如金融交易或数据修改,防止用户意外或恶意多次点击提交按钮导致的数据重复性问题。下面将详细介绍Struts Token的工作原理、实现方式及其...
Struts框架是Java Web开发中的一个关键组件,它在JSP(JavaServer Pages)基础上提供了一种更规范、更易维护的MVC(Model-View-Controller)架构。标题"Struts框架应用于jsp中"表明我们将探讨如何在JSP应用程序中...
表单中可以包含一个List类型的参数,允许用户输入多个值。在HTML中,这可以通过多次使用相同name属性的input元素实现。在Struts1中,ActionForm类需要有一个对应的List字段来接收这些值,这样在提交表单时,Struts1...
在Web开发中,表单重复提交是一个常见的问题,可能导致数据不一致或处理逻辑的混乱。Struts2提供了多种方法来防止这种情况,其中一种是通过重定向来实现。下面将详细解释Struts2如何通过重定向来防止表单重复提交。 ...
Struts 中数据在 Action 与 JSP 中的传递总结 Struts 框架中,数据在 Action 与 JSP 之间的传递是一种常见的需求。为了实现这种传递,Struts 提供了多种方式,本文将对这些方式进行总结。 方式一:通过 FormBean ...
在Struts2的配置文件(通常是struts.xml)中,你需要为你的Action添加一个或多个action配置,指定处理文件上传的result类型。Struts2提供了一个特殊的`stream`结果类型,用于处理文件上传: ```xml ...
在Struts2中,文件上传功能是一个常用特性,尤其在处理用户提交的多个文件时。本文将详细讲解如何使用Struts2进行多个文件的上传,重点是使用List集合进行上传。 首先,要实现Struts2的文件上传,必须引入必要的...
Struts2和JSP Servlet上传是Web开发中的常见场景,主要涉及如何在用户提交表单时处理文件上传请求。这两个技术都是Java Web开发的重要组成部分,Struts2是一个基于MVC设计模式的开源框架,而Servlet是Java EE规范的...
在这个实例中,“struts2实现在jsp页面对员工的增删改查操作”意味着我们将探讨如何使用Struts2框架来处理员工管理的基本功能,包括添加、删除、更新和查询员工信息,并在JSP页面上展示这些操作。 首先,我们需要...
1. 创建JSP页面:在JSP中,你需要创建两个或者更多个下拉列表,并绑定AJAX事件监听器。当第一个下拉列表的值改变时,触发AJAX请求。 2. AJAX调用:使用JavaScript(例如jQuery库)编写AJAX代码,向服务器发送请求,...
在处理表单数据时,你需要在这个文件中定义一个或多个动作类,这些类通常会继承自`ActionSupport`,并重写`execute()`方法。例如: ```xml <result name="success">/success.jsp <result name="input">/form.jsp...
Struts迭代器(Iterator)在JSP中与Map的交互是一种常见的编程场景,尤其是在处理表单数据、展示复杂对象结构时。Struts2框架提供了一种便捷的方式,允许我们在JSP页面上遍历并显示存储在Map中的数据。这篇博客...
在这个基于Struts的JSP用户管理模块中,我们将会深入探讨如何利用Struts来实现用户登录功能,以及在MVC模式下各个组件的角色和交互。 首先,让我们理解MVC模式。Model代表应用程序的数据模型,处理业务逻辑和数据...
通过以上三个步骤,我们成功地实现了在Struts中通过Token来防止表单重复提交的功能。这种方法不仅提高了应用的安全性,还提升了用户体验。在实际项目开发过程中,还需要根据具体需求进一步完善和优化这一机制。