关于struts如何实现跨页面的表单参数的传递呢?
1,我们需要和配置文件结合起来看下:
- <struts-config>
-
<form-beans>
-
<form-beanname="loginForm"type="prj8_1.form.LoginForm"/>
-
<form-beanname="reg1Form"type="prj8_1.form.Reg1Form"/>
-
</form-beans>
-
<global-exceptions/>
-
<global-forwards/>
-
<action-mappings>
-
<action
-
//attribute="loginForm"
-
input="/login.jsp"
-
name="loginForm"
-
path="/login"
-
scope="request"
-
type="prj8_1.action.LoginAction"/>
-
<actionname="reg1Form"forward="/p2.jsp"path="/toP2"scope="session"/>
-
<actionname="reg1Form"path="/reg1"type="prj8_1.action.Reg1Action"scope="session"/>
-
</action-mappings>
-
<message-resourcesparameter="prj8_1.ApplicationResources"/>
-
</struts-config>
<struts-config>
<form-beans >
<form-bean name="loginForm" type="prj8_1.form.LoginForm" />
<form-bean name="reg1Form" type="prj8_1.form.Reg1Form" />
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings >
<action
//attribute="loginForm"
input="/login.jsp"
name="loginForm"
path="/login"
scope="request"
type="prj8_1.action.LoginAction" />
<action name="reg1Form" forward="/p2.jsp" path="/toP2" scope="session"/>
<action name="reg1Form" path="/reg1" type="prj8_1.action.Reg1Action" scope="session"/>
</action-mappings>
<message-resources parameter="prj8_1.ApplicationResources" />
</struts-config>
先来简单介绍下各个标签的作用吧!
a,<form-beans></form-beans>中套的都是beans是所有bean的集合,也就是所有ActionForm的集合,<form-beanname="loginForm"type="prj8_1.form.LoginForm"/>,<form-bean/>是单个bean,name属性是一个标识,你可以自己定义,最好还是和ActionForm的名字一样,方便点。type是这个ActionForm的路径了。
b,<global-forwards/>全局跳转。
c,<action-mappings>定义action的映射关系。input表示错误了要跳转到的页面。name表示把得到的参数给谁打包,显然这里就是给上面的loginForm,所以这个属性就把action和actionForm关联起来。path定义了在jsp中form表单中action添什么。scope可以是request,session,application,这影响actionForm的有效范围。type是action的类路径。
d,<message-resources>国际化资源文件。
2,<actionname="reg1Form"forward="/p2.jsp"path="/toP2"scope="session"/>
<actionname="reg1Form"path="/reg1"type="prj8_1.action.Reg1Action"scope="session"/>
这里我们定义了2个jsp分别是p1.jsp和p2.jsp用来实现跨页面的参数传递。
p1.jsp
- <html:formaction="/toP2">
-
ppassword:<html:passwordproperty="password"/><br/>
-
account:<html:textproperty="account"/><br/>
-
<html:hiddenproperty="page"value="1"/>
-
<html:submitvalue="next"/><html:cancel/>
-
</html:form>
<html:form action="/toP2">
ppassword : <html:password property="password"/><br/>
account : <html:text property="account"/><br/>
<html:hidden property="page" value="1"/>
<html:submit value="next"/><html:cancel/>
</html:form>
这里对应的actionForm是reg1Form。p1的action处是/toP2,这时候传递的参数就被放置在了session中,得到了暂时的保存,因为scope="session"啊。forward="/p2.jsp"控制当点击了p1的submit跳转到哪里。
p2.jsp
- <html:formaction="/reg1">
-
phone:<html:passwordproperty="phone"/><br/>
-
address:<html:textproperty="address"/><br/>
-
<html:hiddenproperty="page"value="2"/>
-
<html:submitvalue="do"/><html:cancel/>
-
</html:form>
<html:form action="/reg1">
phone: <html:password property="phone"/><br/>
address : <html:text property="address"/><br/>
<html:hidden property="page" value="2"/>
<html:submit value="do"/><html:cancel/>
</html:form>
3,进入p2.jsp后,然后通过action="/reg1"把信息都提交到了Reg1Action中。
4,这里有一个问题,如果我在跨页面要做错误验证呢,比如不为空,长度限制呢。那怎么来确定p1,和p2中的参数呢。可以通过<html:hidden/>隐藏表单来实现,在actionForm中判断是第一个页面的表单就ok了。当然以后还会有更好的方法。
5,重点就是在放置参数的范围上。session
分享到:
相关推荐
在“Struts 处理跨页表单”的主题中,我们将深入探讨如何在Struts框架下实现跨页数据的处理和展示,这在大型Web应用中是非常常见的一种需求。 首先,跨页表单通常涉及大量的数据,而一次性加载所有数据可能会导致...
2. 在 JSP 页面中,使用表单或其他方式将参数传递给 Action。 3. 在 Action 中,使用设定的属性接收参数,例如 `userName`。 例如,在 Action 中定义了 `userName` 属性,可以在 JSP 页面中使用 `user1!add?...
Struts2会自动将请求参数绑定到这些字段,实现数据的映射。 3. **结果类型(Result Types)**:Struts2支持多种结果类型,如`dispatcher`(默认类型,重定向到JSP页面)、`stream`(用于文件下载)等。Action执行后...
2. 设计和实现表单JSP页面,用于用户输入和提交数据。 3. 配置struts-config.xml,定义Action和请求之间的映射。 4. 设计数据库模型,使用ORM框架进行数据持久化。 5. 实现服务层,处理业务逻辑和数据库交互。 6. ...
- 在JSP页面上展示待修改的记录,这可能通过Action从数据库获取数据并传递给ActionForm实现。 - 用户修改数据后,提交表单,ActionServlet调用更新Action。 - Action验证表单数据,然后调用服务层方法,使用新...
Action类中的方法通常对应着用户界面的各个操作,而这些方法的参数则是用来接收前端请求传递的数据。本篇文章将深入探讨Struts2中Action接收参数的多种方式,以及相关源码解析。 首先,最常见的接收参数方式是通过...
2. **传递参数**:在Struts2中,可以通过不同的方式传递参数,如表单参数、URL参数、Action上下文参数等。例如,在`main.jsp`中可以使用表单元素将数据提交到服务器,然后在Action类中通过`@ActionParams`注解或者...
在`Struts2_0900_ModelDrivenParamInput`这个文件中,可能包含了关于Struts2 0.9.0版本如何处理ModelDriven模式下参数输入的示例代码。ModelDriven模式简化了Action类的编写,使得业务逻辑更专注于处理业务,而不是...
总的来说,Struts1.x和Struts2.x都实现了从JSP页面到Action的数据传递,但在实现方式上有显著差异。Struts1.x依赖于ActionForm,而Struts2.x则使用了更强大的OGNL和拦截器机制。了解这些原理有助于我们更好地理解和...
总结来说,通过这种方式,我们可以利用AJAX向Struts2 Action传递JSON数组,实现异步数据交互。这在动态更新页面内容、处理表单提交等场景下非常有用。同时,使用JSON作为数据交换格式,使得前后端的数据交换变得更加...
压缩包文件“Struts2_1000_CharacterEncoding”可能包含了示例代码、配置文件或者测试用例,帮助读者理解并解决Struts2框架下处理中文POST参数的具体实现。通过学习这些内容,开发者能够确保在处理多语言环境下,...
7. 请求与响应的处理,包括参数传递和数据封装 8. 实例演示:使用Struts2+Jquery+Ajax实现动态加载数据或表单验证 "struts2 jar"文件包含了Struts2框架的核心库,可能包括struts2-core、struts2-convention、struts...
可以使用Struts2的表单标签或者URL参数来实现。 6. **处理请求并更新数据**:Action接收到分页请求后,根据新的页数重新执行数据库查询,然后更新页面显示的数据。 7. **优化用户体验**:考虑一些额外的功能,如...
对于安全性,Struts2 提供了内置的拦截器来实现输入校验和防止常见的Web攻击,例如XSS(跨站脚本攻击)和CSRF(跨站请求伪造)。拦截器可以在请求到达Action之前进行校验,如果校验未通过,则可以终止请求的进一步...
在Struts2框架中,参数传递是连接前端页面与后台Action类的重要环节,使得用户交互的数据能够被正确处理。在本文中,我们将深入探讨几种在Struts2中进行参数传递的方法。 1. **Action中直接参数法** 这是最基本的...
1. **Struts配置**:首先,我们需要配置Struts的核心配置文件`struts-config.xml`,其中定义了Action类、ActionForm表单以及Action的映射关系。在这个网上书店实例中,可能会有如“搜索图书”、“添加购物车”、...
5. **配置Struts**:在struts.xml文件中配置`<action>`元素,指定`LoginAction`的映射路径、结果页面以及参数绑定。 6. **视图层**:创建JSP页面,如login.jsp和success.jsp(登录成功)、error.jsp(登录失败)。...
总结,实现Struts2的国际化涉及资源文件的创建、配置Struts2的`struts.xml`、设置locale以及在JSP页面中使用国际化标签库。理解和掌握这些步骤对于开发全球化应用程序至关重要。通过阅读源码和利用相关工具,开发者...
Struts2和Ajax是两种在Web开发中广泛使用的技术,它们结合使用可以实现前后端的高效交互。在本场景中,我们将重点讨论如何利用Struts2作为后台处理框架,与前端Ajax通过JSON(JavaScript Object Notation)数据格式...
在Struts2中,这些操作可以通过Action类、ActionForm对象和相应的JSP页面来实现。Action类处理用户的请求,ActionForm对象封装表单数据,而JSP则展示数据或接收用户输入。 1. 创建(Create):当用户提交新数据时,...