`
zhbwww
  • 浏览: 37695 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

sturts2中sturts.xml中result中的 type 含义

    博客分类:
  • java
阅读更多
转自:http://tieba.baidu.com/f?kz=651997967
一个提交到服务器的处理通常可以分为两个阶段,第一个阶段查询服务器状态(查询或者更新数据库),第二个阶段选择一个合适的结果页面其返回给用户(这里要讲的Result的内容)。 
Struts2提供了对不同种类返回结果的支持,常见的有JSP,FreeMarker,Velocity等。 
Struts2支持的不同类型的返回结果为: 
名字                 说明 
Chain Result  用来处理Action链 

Dispatcher Result  用来转向页面,通常处理JSP 

FreeMarker Result  处理FreeMarker模板 

HttpHeader Result  用来控制特殊的Http行为 

Redirect Result  重定向到一个URL 

Redirect Action Result  重定向到一个Action 

Stream Result  向浏览器发送InputSream对象,通常用来处理文件下载 

Velocity Result  处理Velocity模板 

XLS Result  处理XML/XLST模板 

PlainText Result  显示原始文件内容,例如文件源代码 

S2PLUGINS:Tiles Result  结合Tile使用 

另外第三方的Result类型还包括JasperReports Plugin,专门用来处理JasperReport类型的报表输出。 

在struts-default.xml文件中已经有了对于所有类型Result的定义: 

<result-types>  

    <result-type name="chain"  

             class="com.opensymphony.xwork2.ActionChainResult"/>  

    <result-type name="dispatcher"  

             class="org.apache.struts2.dispatcher.ServletDispatcherResult"  

             default="true"/>  

    <result-type name="freemarker"  

             class="org.apache.struts2.views.freemarker.FreemarkerResult"/>  

    <result-type name="httpheader"  

             class="org.apache.struts2.dispatcher.HttpHeaderResult"/>  

    <result-type name="redirect"  

             class="org.apache.struts2.dispatcher.ServletRedirectResult"/>  

    <result-type name="redirectAction"  

             class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/>  

    <result-type name="stream"  

             class="org.apache.struts2.dispatcher.StreamResult"/>  
<result-type name="velocity"  

             class="org.apache.struts2.dispatcher.VelocityResult"/>  

    <result-type name="xslt"  

             class="org.apache.struts2.views.xslt.XSLTResult"/>  

    <result-type name="plainText"  

             class="org.apache.struts2.dispatcher.PlainTextResult" />  

    <!-- Deprecated name form scheduled for removal in Struts 2.1.0.  

         The camelCase versions are preferred. See ww-1707 -->  

    <result-type name="redirect-action"  

             class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/>  

    <result-type name="plaintext"  

             class="org.apache.struts2.dispatcher.PlainTextResult" />  

</result-types>  

从上述代码中可以看出在不指定Result类型的时候使用dispatcher类型。 

定义一个Result值, 
<result name="success" type="dispatcher">  

    <param name="location">/ThankYou.jsp</param>  

</result>  

由于type默认值是dispatcher,所以这里不需要定义,另外name的默认值为success所以这里也不需要定义。 
上述代码可以简写为: 
<result>  

    <param name="location">/ThankYou.jsp</param>  

</result>  


另外location参数也可以直接卸载result标签内部,所以上述代码的最简单的写法为: 
<result>/ThankYou.jsp</result>  

我们也可以定义多个不同的Result 
<action name="Hello">  

<result>/hello/Result.jsp</result>  

<result name="error">/hello/Error.jsp</result>  

<result name="input">/hello/Input.jsp</result>  

</action>  

上述代码的含义为,名字为Hello的Action有三个返回结果,并且都是 dispatcher类型(默认类型),这三个返回值的名字分别为success(默认值),error,input(当输入不通过时,action 方法返回input),对应的页面的路径分别为 /hello/Result.jsp,/hello/Error.jsp,/hello/Input.jsp。 

有些时候我们需要一个定义在全局的Result,这个时候我们可以在package内部定义全局的Result,例如: 
<global-results>  

<result name="error">/Error.jsp</result>  

<result name="invalid.token">/Error.jsp</result>  

<result name="login" type="redirect-action">Logon!input</result>  

</global-results>  

动态返回结果 

有些时候,只有当Action执行完璧的时候我们才知道要返回哪个结果,这个时候我们可以在Action内部定义一个属性,这个属性用来存储Action执行完璧之后的Result值,例如: 
private String nextAction;  

public String getNextAction() {  

    return nextAction;  

}  

在strutx.xml配置文件中,我们可以使用${nextAction}来引用到Action中的属性,通过${nextAction}表示的内容来动态的返回结果,例如: 
<action name="fragment" class="FragmentAction">  

<result name="next" type="redirect-action">${nextAction}</result>  

</action>  

上述Action的execute方法返回next的时候,还需要根据nextAction的属性来判断具体定位到哪个Action。 


在strutx.xml配置文件中,我们可以使用method=""来设置调用类的哪个方法,这样就可以在一个JAVA类中使用不同的方法来实现不同的功能,就无需每个功能写一类了,例如:
 
<action name="fragment" class="FragmentAction" method="add">  
      <result>/success.jsp</result>  
</action> 

分享到:
评论

相关推荐

    Sturts2.rar

    在本示例中,"Sturts2.rar"可能包含了一个演示如何使用Struts2实现文件上传功能的项目。文件上传是Web应用中常见的需求,它允许用户上传文件到服务器。 在Struts2中,处理文件上传主要依赖于Apache Commons ...

    sturts2权威指南.pdf

    Struts2是Java Web开发中的一个强大框架,它基于Model-View-Controller(MVC)设计模式,旨在简化企业级应用程序的开发流程。《Struts2权威指南》是一本全面覆盖Struts2框架的详尽教程,共计728页,以PDF格式提供,...

    sturts2的jar包

    在实际开发中,导入Struts2的jar包后,还需要进行相应的配置工作,包括Web.xml中的Servlet配置、struts.xml中的Action配置以及项目的其他设置。通过这些配置,开发者能够有效地组织和控制应用的行为,提高开发效率和...

    sturts2整合json的jar 包

    在Struts2中集成JSON(JavaScript Object Notation)技术,可以让应用与客户端进行更高效的数据交互,通常用于Ajax(Asynchronous JavaScript and XML)请求。JSON因其轻量级和易于解析的特性,在Web服务和前端数据...

    sturts2中文教程~

    2. **配置文件**:Struts2使用XML配置文件(struts.xml)来定义Action、结果类型、拦截器等,也可以使用注解进行简化配置。 3. **Interceptor(拦截器)**:拦截器是Struts2的一个强大特性,它们在Action调用前后...

    sturts2安装及工作流程

    6. **结果类型(Result Types)**:Struts2的结果类型定义了Action执行后的跳转方式,可以是JSP、FreeMarker模板、直接返回JSON或XML等。这使得视图层的渲染更加多样化。 7. **OGNL(Object-Graph Navigation ...

    Sturts2整合Hibernate连接MySQL数据库

    在这个"Sturts2整合Hibernate连接MySQL数据库"的实例中,我们将探讨如何将这三个技术有效地结合在一起,以便在Web应用中执行CRUD(创建、读取、更新和删除)操作。 首先,集成Struts2和Hibernate需要设置相关的依赖...

    s2s3m3 sturts2+mybatis3+spring2整合

    【标题】"s2s3m3 sturts2+mybatis3+spring2整合" 涉及到的是一个经典的Java企业级开发框架集成,主要用于构建高效、可维护的Web应用程序。在这个项目中,Struts2作为MVC(Model-View-Controller)架构的前端控制器,...

    Sturts 2 框架在线答疑系统

    在这个“Sturts 2 框架在线答疑系统”中,核心功能是实现Struts验证,这涉及到表单数据的验证和错误处理,对于提升用户体验和确保数据准确性至关重要。 **Struts 2 框架概述** Struts 2 是Apache软件基金会下的一个...

    sturts2第二部分

    "Sturts2第二部分"可能是指由于文件大小限制,将Struts2的完整压缩包分为两个部分进行上传,这部分包含了Struts2框架的后续内容。 在`src`目录下,通常会包含Struts2框架的源代码。源码是理解框架工作原理的关键,...

    sturts2.0项目代码

    在"sturts2.0项目代码"中,我们可以看到一个初学者学习并实践Struts2.0框架的过程,这些代码主要涵盖了基础的使用场景。 1. **模型(Model)**:在Struts2中,模型通常由JavaBeans或POJO(Plain Old Java Object)...

    maven项目sturts2 demo

    在Maven项目中,Struts2的相关依赖会写入`pom.xml`文件。 在`maven-SturtsWeb-demo`项目中,你可能会看到以下组件: 1. **src/main/java**: 存放源代码,包括Struts2的Action类和其他业务逻辑。 2. **src/main/...

    Sturts2文件下载—中文乱码处理

    @Action(value = "download", results = { @Result(name = "success", type = "stream", params = { "contentType", "application/octet-stream", "inputName", "fileInputStream", "contentDisposition", ...

    sturts2课件第三天

    在“Sturts2课件第三天”的学习中,我们可能会涉及以下关键知识点: 1. **Struts2架构**:理解Struts2的核心组件和工作流程,包括Action、Result、Interceptor、Plug-in等,以及它们在请求处理中的作用。 2. **...

    sturts2校验总结

    本文将深入探讨Struts2的验证机制,主要聚焦于`Login-validation.xml`配置文件,它是Struts2中用于表单验证的重要组成部分。 在Struts2中,验证是通过一个称为拦截器(Interceptor)的机制来实现的,这些拦截器在...

    Sturts2.0.11.2jar包

    同时,还需要配置struts2的核心配置文件(struts.xml),指定Action映射、拦截器栈以及全局配置。为了保证应用的安全性,开发者还需要关注Struts2的安全更新,因为框架历史上曾出现过一些安全漏洞,及时更新到最新版本...

    jquery+json+sturts2

    2. **Action配置**:在Struts2的配置文件(struts.xml)中,定义Action类和对应的Result,其中Result类型可以设置为"json",以便返回JSON数据。 3. **数据绑定**:Struts2的JSON插件可以自动将Java对象转换为JSON,...

    Sturts2.0.11.2源代码

    1. **核心架构**:Struts2的核心是Action和Result。Action是业务逻辑的载体,而Result负责将Action的执行结果呈现给用户。Action和Result通过配置文件或注解进行关联,形成了请求处理的流程。 2. **拦截器...

    sturts2的入门文档

    - **应用场景**:在Struts2中,OGNL主要用于配置文件中定义动态的值以及Action类中进行复杂的属性访问。 - **示例**:如在配置文件中使用OGNL来设置Action的属性。 **2. 文件上传:** - **定义**:Struts2支持文件...

    spring + ibatis + sturts2整合实例

    在本实例中,Struts2作为前端控制器,接收用户请求,根据配置的Action和Result,转发到相应的服务和视图。Struts2与Spring的集成使得我们可以方便地在Action类中注入Spring管理的Bean,实现业务逻辑。 整合步骤: ...

Global site tag (gtag.js) - Google Analytics