首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

Struts札记(三)ActionForward转发

2012-07-30 
Struts笔记(三)ActionForward转发3. ActionForward转发ActionForward 实际上是一个简单但富有效率的包装类

Struts笔记(三)ActionForward转发
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 通常这样来选择:



在struts-config.xml中配置:
<forward classname="app.MyActionMapping">


3.6. 框架提供两种基本的ActionForward类.

org.apache.struts.action.ForwardingActionForward 缺省设置redirect属性为false
org.apache.struts.action.RedirectingActionForward 缺省设置redirect属性为true

热点排行