`

Struts2.0中的result标签

阅读更多
在action的指定方法执行完毕后总会返回一个字符串,struts2根据返回的字符串去action的配置中的result去找匹配的名字,根据配置执行下一步的操作。




    在ActionSupport基类中定义了五个标准的返回值




  String SUCCESS       = "success";

  String NONE     = "none";

  String ERROR    = "error";

String INPUT    = "input";String LOGIN    = "login";
当然我们可以自己随意定义返回的名字




        result元素有两个用处,首先它提供一个逻辑上名字。一个action可以单纯的返回success或input而不用理会之后的具体细节。第二,result元素提供type属性,可以不仅仅的返回一个jsp页面,而可以实现更多有意思的功能。

    每个包可以有自己的默认result type,当一个result没指定type时将使用默认。正常情况下默认的result type为dispatcher。如果一个包继承另一个包,这个包可以实现自己的默认result也可以继承父包的默认result。手动指定一个默认的result如下


<result-types>
   <result-type name="dispatcher" default="true"
                class="org.apache.struts2.dispatcher.ServletDispatcherResult" />
</result-types>


同时,一个result的name属性也有默认值success。最平常的情况下,一个result如下



<result>
    /ThankYou.jsp
</result>

一个action可以有多个不同的result



<action name="Hello">
    <result>/hello/Result.jsp</result>
    <result name="error">/hello/Error.jsp</result>
    <result name="input">/hello/Input.jsp</result>
</action>
全局result

    有些时候,一些result是可以为所有的action服务的,例如出错页面的result,登陆页面的result

我们可以定义一些全局result供同一个包的所有actoin共享。注意首先struts2会先搜索局部result,如果没找到则会去全局result寻找匹配的result



<global-results>
    <result name="error">/Error.jsp</result>
    <result name="invalid.token">/Error.jsp</result>
    <result name="login" type="redirectAction">Logon!input</result>
</global-results>

result 的动态参数配置

   有些时候我们需要从一个action转向另一个action,但是参数却是运行才能知道,可以用一下的方法实现。下面用一个例子来说明



<struts>
....
   <package name="somePackage" namespace="/myNamespace" extends="struts-default">
      <action name="myAction" class="com.project.MyAction">
         <result name="success" type="redirectAction">otherAction?id=${id}</result>
         <result name="back" type="redirect">${redirectURL}</result>
      </action>

      <action name="otherAction" class="com.project.MyOtherAction">
         ...
      </action>     
   </package>
....
</struts>


在action中必须有id,redirectURL属性以及它们的get方法



public class MyAction extends ActionSupport {
   private int id;
   private String redirectURL;
   ...
   public String execute() {
       ...
      if (someCondition) {
         this.redirectURL = "/the/target/page.action";
         return "back";
      }

      this.id = 123;
      return SUCCESS;
   }

   public int getId() { return this.id; }
   public void setId(int id) { this.id = id; }
   public String getRedirectURL() { return this.redirectURL; }
   public void setRedirectURL(String redirectURL){this.redirectURL=redirectURL;}
   ...
}

如果返回success的话将会转到/<app-prefix>/myNamespace/otherAction.action?id=123




当一个result有多个参数时可以通过param子属性指定,在后面会有例子







result 的types




result有许多不同的types,用来实现不同的功能,struts2默认的types有如下几个




Dispatcher 转到一个视图页面,通常为jsp页面。这个是默认的type值。



<result>
    /ThankYou.jsp
</result>

Stream 将原始数据字节发送给浏览器,通常用于下载文件




contentType 发送给浏览器的流的mime-type (默认text/plain).

contentLength- 流的长度 (便于浏览器显示下载进度).

contentDispostion- 设置响应头contentDispostion的值(默认inline)

这个我不太清楚是什么意思,Google了一下也没什么好的解释

InputName action提供的输入流的属性名称(默认inputStream).

bufferSize从输入流写入到输出流的缓存大小(默认1024字节).



<result name="success" type="stream">
  <param name="contentType">image/jpeg</param>
  <param name="inputName">imageStream</param>
  <param name="bufferSize">1024</param>
</result>

PlainText 一般用来显示一个jsp或html页面的原始内容



<action name="displayJspRawContent" >
  <result type="plaintext">/myJspFile.jsp</result>
</action>

redirectAction 定向到另一个action 觉得没什么太大的用处,举个例子留作参考吧



<package name="public" extends="struts-default">
    <action name="login" class="...">
        <!-- Redirect to another namespace -->
        <result type="redirect-action">
            <param name="actionName">dashboard</param>
            <param name="namespace">/secure</param>
        </result>
    </action>
</package>

<package name="secure" extends="struts-default" namespace="/secure">
    <-- Redirect to an action in the same namespace -->
    <action name="dashboard" class="...">
        <result>dashboard.jsp</result>
        <result name="error" type="redirect-action">error</result>
    </action>

    <action name="error" class="...">
        <result>error.jsp</result>
    </action>
</package>

<package name="passingRequestParameters" extends="struts-default" namespace="/passingRequestParameters">
   <-- Pass parameters (reportType, width and height) -->
   <!--
   The redirect-action url generated will be :
   /genReport/generateReport.action?reportType=piewidth=100height=100
   -->
   <action name="gatherReportInfo" class="...">
      <result name="showReportResult" type="redirect-action">
         <param name="actionName">generateReport</param>
         <param name="namespace">/genReport</param>
         <param name="reportType">pie</param>
         <param name="width">100</param>
         <param name="height">100</param>
      </result>
   </action>
</package>
分享到:
评论

相关推荐

    struts2.0 教程(标签,XML配置,入门例子,帮助手册)

    "struts2.0-1基本入门.doc"和"Struts2.0的各种配置详解.doc"将详细介绍如何在struts.xml文件中配置Action、Result和Interceptor。Action配置包括指定Action类、方法和映射URL,Result则定义了请求成功后的跳转路径,...

    Struts2.0 入门教程+帮助手册+权威指南+配置文档+标签库+增删改查代码等.rar

    首先,`Struts2.0中文教程.chm`和`Struts2入门2.pdf`、`Struts2入门V3.0.pdf`是入门教程,它们通常会从基础概念开始讲解,如Struts2的核心组件、Action类、Result类型、拦截器等,并逐步深入到实际开发中的应用,如...

    struts2.0中文教程

    Struts2.0是Java Web开发中的一个强大框架,它基于Model-View-Controller(MVC)设计模式,旨在简化应用程序的开发流程,提高代码的可维护性和可扩展性。这个"struts2.0中文教程"包含了丰富的资料,帮助开发者深入...

    Struts2.0大结合

    Struts2.0是Java Web开发中非常重要的一个框架,它是经典的MVC(Model-View-Controller)设计模式的实现,极大地简化了Web应用的开发流程。本资料集旨在全面介绍Struts2.0,帮助学习者从零基础逐步掌握这一强大的...

    struts 2.0 详细配置

    - Struts 2 提供了丰富的标签库来简化视图层的开发。 - JSP 页面用来展示数据给用户。 2. **控制器(Controller)** - **FilterDispatcher**:作为 Struts 2 的前端控制器,处理所有请求并将其转发到适当的 ...

    Struts2.0学习系列 以及 Struts2.0安装包

    Struts2.0是Java Web开发中的一个强大框架,它基于Model-View-Controller(MVC)设计模式,为开发者提供了构建可维护性高、结构清晰的Web应用程序的工具。这个"Struts2.0学习系列"旨在帮助初学者及进阶者深入理解并...

    Struts2.0中文教程

    在Struts2.0框架中,核心组件包括Action、Result、Interceptor等,它们共同协作实现了业务逻辑和视图展示的分离。Action类是处理用户请求的主要对象,它与业务层交互,完成特定的业务逻辑。Result则是用来处理Action...

    struts2.0中文帮助手册

    5. **标签库**:Struts2.0提供了丰富的标签库,如s:form、s:textfield、s:select等,用于在JSP页面中快速构建UI。手册会介绍这些标签的用法和应用场景。 6. **国际化(i18n)与主题(Theme)**:如何配置和使用...

    struts2.0中文学习大全

    在Struts2.0中,Action类是业务逻辑的载体,它接收用户的请求,处理数据,然后通过Result将控制权传递给视图。Interceptor(拦截器)则提供了一种灵活的机制,可以在Action执行前后进行额外的操作,如日志记录、权限...

    Struts2.0中文教程.chm

    Struts2.0是Java企业级开发中广泛使用的MVC框架,它是在Struts1.x的基础上发展起来的,旨在提供更强大的功能、更好的性能和更灵活的架构。本教程全面覆盖了Struts2.0的核心概念和技术,为初学者和进阶开发者提供了...

    struts2.0教程合集

    这份文档通常会涵盖Action、拦截器(Interceptor)、结果(Result)和配置文件(struts.xml)等内容,是了解Struts2.0的第一步。此外,它可能还会讲解Struts2.0如何与Spring、Hibernate等其他框架集成,以实现更高效...

    struts2.0源代码

    Struts2.0是Apache软件基金会的一个开源框架,主要用于构建基于Java EE的Web应用程序。它在原有的Struts1.x的基础上进行了重大改进,引入了更多现代Web开发的最佳实践和设计模式,提高了开发效率和代码可维护性。这...

    struts2.0&中文帮助手册.rar

    在Struts2.0中,"struts2.0.jar"是核心库文件,包含了框架的基本组件和服务,如Action、Result、Interceptor等。它的引入使得开发者可以通过编写Action类来处理HTTP请求,并通过配置Action映射来定义请求到特定方法...

    Struts2.0 入门学习资料

    4. 自定义标签库:Struts2.0提供了一套强大的自定义JSP标签,简化视图层的开发,如、等。 5. 国际化与本地化:Struts2.0内置了对多语言的支持,开发者可以通过资源文件轻松实现应用的国际化。 三、Struts2.0的配置...

    Struts2.0培训课件

    Struts2.0是Java Web开发中的一个强大框架,它基于Model-View-Controller(MVC)设计模式,为开发者提供了构建可维护性高、结构清晰的Web应用程序的工具。这个"Struts2.0培训课件"包含了深入学习和理解Struts2.0框架...

    手把手教你Struts2.0

    Struts2.0 是一个基于 Model-View-Controller (MVC) 设计模式的Java Web框架,它旨在简化Web应用的开发。Struts 2.0是在Struts 1.x的基础上进行了改进,以解决原有版本的一些局限性,如代码量过多、单元测试困难等...

    学习Struts 2.0系列

    9. **Struts 2.0标签库**:熟悉各种内置的JSP标签,如s:textfield、s:submit等,以及如何使用它们来简化视图层开发。 10. **异常处理**:学习如何配置全局和局部的异常处理策略,以优雅地处理运行时错误。 11. **...

    最新struts2.0教程

    本教程涵盖了Struts2.0的核心概念、关键特性以及实际开发中的常见应用。 首先,让我们了解一下Struts2.0的基本结构。它通过Action类来处理用户请求,Action类是业务逻辑的载体,负责处理用户输入并返回结果。Action...

    Struts2.0框架技术详解

    Struts2.0提供了一套丰富的标签库,用于简化页面开发过程中的复杂操作。 - **`&lt;s:textfield&gt;`**:用于创建文本输入框。 - **`&lt;s:select&gt;`**:用于创建下拉选择框。 - **`&lt;s:submit&gt;`**:用于创建提交按钮。 - **`...

Global site tag (gtag.js) - Google Analytics