`
Mysun
  • 浏览: 273936 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

webwork result type之redirect&redirect-action

阅读更多
   可能大家都知道在webwork里面如果想重定向到另外一个页面主要有两种方法,一种就是使用可以保留Request上下文的Chain result type,一种是不保留Request上下文的Redirect result type。这两种Redirect类型都是webwork提供默认支持的。其中redirect又有两种类型,redirect和redirect-action。我在这里主要想说一下这两种redirect type的差别。
   关于redirect-action的说明可以再opensymphony的webwork wiki上找到http://www.opensymphony.com/webwork/wikidocs/Redirect%20Action%20Result.html。里面有提到说如果想要让浏览器重定向到一个URL上去调用一个特定的action最好使用redirect-action。原因是使用redirect-action的时候你不用自己去对URL进行encode。在使用redirect的时候,对于url的编写需要符合xml规范,比如&需要使用&amp来代替等等,一不小心就会忘记掉。在使用redirect-action之后,url的编码工作由webwork帮助你完成,你要做的就是用<param></param>写一些参数进去。
   比如,你的result可能这样写:
  
   <result name="OK" type="redirect-action">
	<param name="actionName">test</param>
	<param name="method">test</param>
        <param name="namespace">xxx</param>
	<param name="field1">${field1}</param>
	<param name="field2">${field2}</param>
   </result>
   

这样的话,webwork就会帮你生成一个url,大概是这个样子的:
http://mysun.javaeve.com/[color=red]ApplicationContext[/color]/[color=olive]namespace[/color]/test!test.do

这里有几个地方需要说明:

    [1]ApplicationContext:这个应用上下文是你给你web应用选择的访问起始点。例如在jboss当中就是在application.xml中用<context-root>标签设定的那个值。
    [2]namespace:这个namespace跟webwork配置文件中<package>标签中的namespace属性意义相同。也就是说,如果你在跳转之前的url为http://mysun.iteye.com/test/test.do并且你在你的关于test这个action的配置文件当中的规定了namespace为test,那么如果你在resul里面用了<param name="namespace">xxx</param>,那么经过转换之后的url就变成了http://mysun.iteye.com/test/xxx/test.do。
    说到这里,需要说明一下redirect-action的一个限制,就是你无法改变你当前的namespace。也就是说,如果你在提交时候的使用了test这个namespace,那么使用redirect-action定义的url始终会在test这个namespace下面。如果你想要改变这个namespace,那就使用redirect吧,直接写url。

   还有一点要说一下,就是${field1}这个参数的赋值问题。field1的赋值是使用webwork的ONGL实现的。当webwork看到result里面有这个${field1}类型的参数的时候,就会从webwork的value stack中找field1这个属性,然后把field1这个属性的值赋值给${field1},最后再拼装成url。如果没有找到对应的值,那么在url里面这个field1的值就为空,看起来会是这样的field1=&field2=
  
分享到:
评论

相关推荐

    WebWork_Result

    本文详细介绍了WebWork框架中`WebWork_Result`配置文件的使用方法,重点讲解了`dispatcher`和`redirect`两种类型的`result`配置及其区别。通过这些知识点的学习,可以帮助开发者更好地掌握WebWork框架的核心机制,...

    webwork配置详解

    总结来说,WebWork 配置涉及Action的创建、ActionContext的理解和使用、ServletDispatcher的调度机制,以及Action的测试和Result Type的设置。熟练掌握这些知识点,能够帮助开发者高效地构建和维护基于WebWork的Java...

    webwork2个人学习总结

    - 可选的结果类型还包括`redirect`(浏览器重定向)、`chain`(链式Action处理)、`velocity`(Velocity模板渲染)和`xslt`(XSLT转换)等,提供了灵活的视图控制方式。 5. **工作原理**: - 当用户发送一个请求...

    webwork核心技术文档

    WebWork支持多种Result Type,如Redirect、Stream、JSP、FreeMarker等,允许开发者灵活控制页面跳转和数据展示方式。 8. **Interceptors(拦截器)**:WebWork的拦截器机制允许在Action执行前后插入额外的逻辑,...

    webwork的api

    8. **结果类型(Result Types)**:WebWork允许定义多种结果类型,如Redirect、Stream、Freemarker等,来决定Action执行后如何呈现结果。这使得开发者可以灵活地控制视图的展现方式。 9. **国际化(i18n)**:...

    WebWork In Action

    根据提供的文件信息,我们可以提取并总结出关于《WebWork In Action》这本书的关键知识点。这些知识点主要围绕WebWork框架的核心概念、实现方式以及高级主题展开。 ### WebWork框架概述 **WebWork**是一款开源的...

    webwork学习笔记

    - `&lt;result&gt;`: 定义Action执行后的结果类型。 - `&lt;interceptor&gt;`: 定义拦截器。 #### 十一、实战G-Roller-WW - **项目简介**: G-Roller-WW是一个实际项目案例,展示了WebWork与其他技术(如Spring、Hibernate)...

    webwork教程几原码示例

    5. **结果类型(Result Type)**: WebWork允许定义多种结果类型,如Redirect、Stream等,控制动作执行后的页面跳转或数据流输出。在`webwork-example`中,你可能看到不同结果类型的实例。 6. **表单和数据绑定**...

    Struts 2权威指南--基于WebWork核心的MVC开发

    WebWork是一个早期的MVC框架,它的许多设计理念和特性被集成到了Struts 2中,使得Struts 2具备了强大的动作(Action)管理、拦截器(Interceptor)机制和强大的结果映射(Result)功能。 1. **动作(Action)**:在...

    xwork配置内容详细讲解

    &lt;result name="error" type="redirect"&gt;/error.jsp&lt;/result&gt; &lt;result name="input" type="dispatcher"&gt;/name.jsp&lt;/result&gt; &lt;/action&gt; ``` 在这个例子中,“login”是动作的名称,“com.action.Search”是指向实现...

    STRUTS2和AJAX结合实现连动菜单

    &lt;result name="cancel" type="redirect-action"&gt;Welcome&lt;/result&gt; &lt;result type="redirect-action"&gt;MainMenu&lt;/result&gt; &lt;result name="expired" type="chain"&gt;ChangePassword&lt;/result&gt; &lt;/action&gt; &lt;!-- ...其他...

    Struts 2.1权威指南基于WebWork核心的MVC开发源代码

    Struts 2.1还支持多种结果类型(Result Types),如dispatcher(用于转发到JSP页面)、stream(用于处理大文件下载)和redirect(用于重定向)。此外,它还提供了丰富的插件体系,可以轻松集成其他框架如Spring、...

    struts2.0第一讲

    &lt;result name="cancel" type="redirect-action"&gt;Welcome&lt;/result&gt; &lt;result type="redirect-action"&gt;MainMenu&lt;/result&gt; &lt;!-- ... --&gt; &lt;/action&gt; ``` `struts.properties`文件则用于配置Struts2的全局属性,如...

    开发框架struts2.1.8.zip

    首先,Struts 2的核心特性之一是Action类,它是处理用户请求的中心组件。在Struts 2.1.8中,Action类支持注解,这使得配置文件更加简洁,代码更易于理解和维护。开发者可以使用注解来指定Action的执行方法、结果映射...

    struts2源码

    Action代表业务逻辑,Result负责视图渲染,Interceptor处理请求和响应之间的拦截操作,ValueStack则是用于存储Action上下文中的数据。 2. **Action和ActionMapping** - Action是业务逻辑的载体,一个Action类对应...

    struts2学习总结

    - `chain`:调用另一个 Action,并可以传递参数,例如 `&lt;result type="chain"&gt;login_add?uid=${uid}&lt;/result&gt;`。 - **字符编码问题**:处理中文时需要注意编码问题,例如对 URL 参数进行编码: - 发送请求时需要...

    Struts2.0

    5. **结果类型(Result Types)**:Struts2支持多种结果类型,如dispatcher(用于转发到JSP页面)、stream(用于下载文件)和redirect(用于重定向URL)。 6. **插件架构**:Struts2的插件架构使得扩展和集成其他...

    struts2.0.6+spring2.0.3+hibernane3的配置

    &lt;result name="login" type="redirect"&gt;login!default.action&lt;/result&gt; &lt;result name="unauthorized"&gt;unauthorized.jsp&lt;/result&gt; &lt;/global-results&gt; &lt;action name="login" class=...

    struct2大纲整理1

    - 结果类型定义了Action执行后如何展示结果,如`dispatcher`(转发到JSP页面)、`redirect`(重定向到新的URL)、`stream`(处理流媒体)等。 8. **模型驱动(ModelDriven)和插件支持** - Struts2支持模型驱动...

    struts2使用的步骤

    &lt;result name="success" type="redirect"&gt;/example/success.jsp&lt;/result&gt; &lt;/global-results&gt; &lt;action name="hello" class="com.example.struts.action.HelloWorldAction"&gt; &lt;/action&gt; &lt;action name="test_*" ...

Global site tag (gtag.js) - Google Analytics