Struts1 跳转技术详解

需积分: 14 6 下载量 11 浏览量 更新于2024-09-17 2 收藏 29KB DOC 举报
"本文档主要介绍了在Struts1框架中实现页面跳转的各种方法,包括完整Action和仅有Form的Action两种情况。" 在Struts1框架中,页面跳转是通过配置struts-config.xml文件和Action类来实现的,主要用于处理用户请求并决定下一步的展示页面。以下是两种常见的跳转方式: 1. 完整的Action跳转: 在这个配置中,`<action>`标签包含了完整的处理逻辑。例如: ```xml <action path="/aFullAction" type="somePackage.someActionClass"> <param name="someForm" /> <forward name="successful" path="someJSP.jsp"/> <forward name="failed" path="someOtherJSP.jsp"/> </action> ``` 在这个配置中,Struts的ActionServlet首先会根据请求的路径找到对应的Action Mapping。如果在请求范围内找不到名为"someForm"的Form Bean,它会创建一个新的实例。接着,调用Form Bean的`reset()`方法,再将表单数据填充到Form Bean中。如果validate属性(默认为true)设置为非false,那么会调用validate()方法进行表单验证。如果validate()返回的ActionErrors不为空,表示验证失败,用户会被重定向到`input`属性指定的"someJSP.jsp"。若验证成功且execute()方法执行后返回的ActionForward指定的名称匹配"successful",则用户会被转发到"someJSP.jsp";如果匹配"failed",则转发到"someOtherJSP.jsp"。这意味着`execute()`方法只有在`validate()`成功后才会被执行。 2. 仅有Form的Action跳转: 这种配置下,Action类不再包含业务逻辑,而是直接使用`org.apache.struts.actions.ForwardAction`。例如: ```xml <action path="/aFormOnlyAction" type="org.apache.struts.actions.ForwardAction" name="someForm" input="someJSP.jsp" parameter="someOtherJSP.jsp" /> ``` 在这种情况下,Struts会查找定义的scope(通常是session或request)以获取或创建"someForm"的Form Bean实例,然后进行相同的数据填充和验证过程。如果验证失败,同样会转向`input`属性指定的"someJSP.jsp"。如果验证成功,用户会被直接转发到`parameter`属性指定的"someOtherJSP.jsp",而不会执行任何自定义的Action类中的业务逻辑。这种方式适用于无需额外业务处理的简单场景。 总结来说,Struts1的页面跳转机制提供了灵活的方式来进行请求处理和页面流转,通过配置struts-config.xml文件可以实现多种跳转策略,以适应不同的应用需求。理解并熟练掌握这些跳转方法对于开发基于Struts1的Web应用程序至关重要。