3. ActionForward转发
ActionForward 实际上是一个简单但富有效率的包装类。其基类仅有四个属性:name, path,redirect, 和 classname。
3.1. ActionForward属性
name:指定ActionForward 的逻辑名字。其它组件可以通过此名称来引用该
ActionForward。以便其他属性可以很容易地被修改。
path:指定ActionForward 的URI。URI 是web 应用通信的重要方式。
redirect:如果设置为 true, 控制被重定向。缺省设置为false ,而且几乎是更好的选择。
className: 可选。当实例化该Forward 时, 用来指定一个org.apache.struts.action.ActionForward 类的子类名称。
3.2. 转发和重定向
HTTP协议本身就具有一个内建的 “重定向(redirect)”命令,服务器可以用它来将控制从一个页面发送到另一个页面。Java web 开发人员在他们的方法代码中则有另一个选择,调用转发(forward)。这二者都在各自的方式上很有用处。
Forward 将保持存储在HTTP 请求和请求上下文中的所有东西。仅可用在同一个应用中。
Redirect 指示web 客户端进行一次新的HTTP 请求。请求的资源可以在同一个应用中,也可以不在。
转发请求
Java Servlet 容器有一个内部机制,可以使一个请求被传递或者称被转发(forwarded)到另一个组件。这将允许一个请求在产生其对应的响应之前被多个组件进行处理。通过这个方法,组件可以在请求上下文中添加和修改对象,甚至修改请求参数。当一个Action 对象返回一个ActionForward时,servlet 就为这个ActionForward路径创建一个RequestDispatcher。如果路径包含查询字符串,查询字符串参数将成为被转发请求的一部分。
重定向请求
当 ActionForward的 redirect 属性设置为 true时, ActionServlet 将向浏览器发送一个
HTTP 响应,告诉浏览器重新提交一个新的请求到一个新的路径。原来的请求参数不再保留,
原来的请求上下文也消失了。新的HTTP 请求仅包含在 ActionForward的 path 属性里包含
的参数,如果有的话。URI在其被送到客户端前被重新编码,并且如果路径在同一个应用中,
用户的会话上下文也会被维护。但是重定向则总是会清除请求上下文。
3.3. 全局和局部转发
Struts 配置对ActionForward提供两个级别嵌套:
Global(全局) ActionForward 对整个应用中的所有Action 对象均有效;
Local(局部) ActionForward 则在ActionMapping 元素中定义。仅对那些在这
个ActionMapping 中调用的Action 对象有效。从Action 对象内部来看,forward 通常这样来选择:
ActionForward forward = mapping.findForward("continue");
3.4. 参数添加
3.4.1. 页面添加参数
如果你通过<html:link> 标签 (org.apache.struts.taglib.html)使用ActionForward,你可以这样来在运行时添加参数到查询组件中:
<html:link
forward="article"
paramId="key"
paramproperty="key"
name="articleForm">
<bean:write name="articleForm" property="name">
</html:link>
在struts-config.xml中配置:
<forward
name="article"
path="/do/article?dispatch=view"/>
3.4.2. 在Action类中添加参数
你也可以在一个Action类中添加参数到ActionForward中,可以这样使用:
ActionForward forward = mapping.findForward("article");
StringBuffer path = new StringBuffer(forward.getPath());
boolean isQuery = (path.indexOf("?")>=0);
if (isQuery)
path.append("&dispatch=view");
else
path.append("?dispatch=view");
return new ActionForward(path.toString());
3.4.3. 动态转发
虽然在一个Struts 配置文件中定义ActionForward是个好的选择,如果必要,你也可以从头创建一个ActionForward,并设定其path 和其他参数:
ActionForward forward = new
ActionForward("/do/itemEdit?action=edit");
3.5. 自定义ActionForward
3.5.1. web.xml配置
<init-param>
<param-name>forward</param-name>
<param-value>app.MyActionForward</param-value>
</init-param>
3.5.2. struts-config.xml的<global-forwards>
<global-forwards type="app.MyActionMapping">
3.5.3. struts-config.xml的单独的forward
<forward classname="app.MyActionMapping">
3.6. 框架提供两种基本的ActionForward类.
org.apache.struts.action.ForwardingActionForward 缺省设置redirect属性为false
org.apache.struts.action.RedirectingActionForward 缺省设置redirect属性为true
分享到:
相关推荐
4. Action返回一个ActionForward对象,指定下一步的处理,通常是转向一个JSP页面。 5. JSP页面通过Struts标签显示数据,或者转发到其他Action。 六、异常处理与国际化 1. Exception Handler:Struts支持全局和局部...
struts-config.xml用于配置Action及其对应的ActionForm、ActionForward和PlugIn等。web.xml则用来配置Struts的初始化参数,以及将请求映射到Struts的DispatcherServlet。 3. **ActionForm**:ActionForm对象用于...
【Struts笔记】 Struts是Apache软件基金会的Jakarta项目中的一个MVC(Model-View-Controller)框架,它用于构建基于Java EE的Web应用程序。Struts通过提供一组设计模式和组件,简化了开发过程,提高了代码的可维护...
3. **配置文件**:struts-config.xml是Struts的核心配置文件,用于定义Action、ActionForm、Forward等元素,配置控制器的行为。 4. **ActionForm**:用于封装用户输入的数据,与Action类配合处理请求。 5. **Tiles...
### Struts2_Action 学习笔记与通配符配置详解 #### 一、Struts2简介及简单配置 Struts2是一个基于Java EE平台的开源Web应用框架,它继承了Struts1的优点,并在此基础上进行了大量的改进。Struts2的核心功能之一是...
4. `execute`方法执行完毕后,返回一个`ActionForward`对象,指示应将响应转发到哪个资源,可能是另一个JSP页面或一个逻辑路径。 `ActionMapping`是另一个关键组件,它包含了在`struts-config.xml`中定义的`<action...
6. 根据 `execute()` 方法返回的 ActionForward 对象,决定是转发还是重定向到下一个页面。 7. 显示结果页面给用户。 通过上述详细介绍,我们可以看出 Struts 作为一个经典的 Web 开发框架,在 Java Web 领域有着不...
基本Action定义了路径、类型、表单、输入和转发等属性。例如: ```xml <action path="/aFullAction" type="somePackage.someActionClass"> <param name="someParam">someValue <forward name="successful" path=...
`struts-config.xml` 是Struts的核心配置文件,定义了Action、ActionForm和ActionForward等信息。 **请求驱动的MVC框架**: 像Struts这样的框架是基于请求驱动的,根据URI决定调用哪个Action类来处理请求。Action...
ActionForward用于控制页面跳转。Struts1的配置主要在struts-config.xml文件中,包括Action映射、Form Bean定义和结果页面的指定等。 **Struts1.x note.jsp** 在Struts1的学习笔记中,`note.jsp`可能是用来展示或...
7. ActionServlet根据ActionForward转发到相应的JSP页面,JSP页面负责展示数据。 五、Struts的标签库 Struts提供了一套强大的标签库,如logic、bean、html和tiles等,这些标签可以帮助开发者更方便地在JSP页面上...
7. **ActionForward**:ActionForward对象用于指定一个Action执行后转向的页面或者另一个Action。这允许灵活的导航控制。 8. **Plug-in机制**:Struts 1.3.x引入了插件机制,可以方便地扩展框架功能,例如添加新的...
3. **配置struts.xml**:在这里定义Action、ActionForm的映射,以及ActionForward的配置。 4. **编写JSP页面**:创建login.jsp,包含一个表单,用户输入用户名和密码后提交。根据ActionForward的结果,跳转到相应的...
根据描述,这篇笔记主要涵盖了创建一个基本的Struts2项目的步骤,以下是对这些步骤的详细解释: 1. **环境准备**:Apache Struts 2的运行需要Servlet API 2.4、JSP API 2.0以及Java 5或更高版本。这些都是开发Java ...
这个对象随后被控制器(Struts的Action)用来处理业务逻辑,更新模型,最后再将结果转发给适当的视图。 ActionForm类通常由开发者自定义,继承自Struts提供的抽象类`org.apache.struts.action.ActionForm`。在这个...
Action 处理请求后,可以调用业务服务,然后返回一个 ActionForward,指示 Dispatcher 将响应转发到哪个 JSP 页面。 4. **国际化与本地化**:Struts 支持多语言环境,允许开发者为不同的地区提供不同的消息和属性...
ActionMapping定义了Action类与URL之间的映射,而ActionForward则定义了Action处理完请求后如何转发到下一个目的地,可以是JSP页面或其他Action。 10. **国际化与本地化** Struts支持多语言环境,开发者可以通过...
Struts1的核心组件包括Action、Form Bean、Action Mapping、ActionForward和Tiles等,它们共同协作以实现Web应用的流程控制。 2. **工作原理** - **请求处理**:当用户发送HTTP请求到服务器时,Struts1拦截这个...