`
kavy
  • 浏览: 890629 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Struts2 Result Types

    博客分类:
  • web
 
阅读更多
一个提交到服务器的处理通常可以分为两个阶段,第一个阶段查询服务器状态(查询或者更新数据库),第二个阶段选择一个合适的结果页面其返回给用户(这里要讲的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,对应的页面的路径分别为/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。
分享到:
评论

相关推荐

    struts2 result配置详解

    Struts2 Result 配置详解 Struts2 框架中 Result 配置是一种非常重要的配置,它直接影响着应用程序的执行结果。Result 配置通常用于定义 Action 的执行结果,例如将结果.redirect 到一个新的 URL,或者将结果....

    struts2 result type 介绍

    除了默认的Dispatcher Result,Struts2还提供了多种内置的Result Types,如Redirect、RedirectAction、Stream、Httpheader等。每种Result Type都有其特定的用途: 1. **Redirect**:此结果类型会触发HTTP的302临时...

    struts2 API帮助文档

    4. **结果类型(Result Types)** - 结果类型决定了Action执行后如何返回结果,如重定向、转发、生成JSON或XML数据等。默认的Result是dispatcher,它将结果渲染到JSP页面。 5. **动态方法调用(Dynamic Method ...

    Struts2 Struts2 超好的Struts2 pdf 文档

    4. **结果类型(Result Types)**:Struts2支持多种结果类型,如`dispatcher`(默认,将结果转发到JSP页面)、`stream`(用于文件下载)、`redirect`(重定向URL)等,可以根据不同的需求选择合适的结果类型。...

    struts2 项目源码

    4. **结果类型(Result Types)**:结果类型决定了Action执行完成后如何展示结果。常见的结果类型有JSP、FreeMarker、Velocity等。在`struts.xml`中,你可以看到如何定义Action的各个结果。 5. **模型(Model)**:...

    Struts2全部jar包

    4. **结果类型(Result Types)**:结果类型定义了Action执行后如何返回响应。常见的结果类型有`dispatcher`(转发到JSP页面)、`stream`(输出流,如文件下载)和`redirect`(重定向)。 5. **OGNL(Object-Graph ...

    struts2-core-2.0.11源码

    5. **结果类型(Result Types)**:`org.apache.struts2.dispatcher.mapper`包中的`ResultMapper`接口及其实现类,定义了如何根据Action的结果名映射到实际的视图资源,比如JSP页面或FreeMarker模板。 6. **插件...

    struts2四天的学习笔记

    5. **结果类型(Result Types)**:Struts2支持多种结果类型,如dispatcher(转发到JSP页面),stream(下载文件),redirect(重定向)等,可以根据不同需求选择合适的结果类型。 6. **OGNL(Object-Graph ...

    Struts2 英文教程

    Struts2中的`ResultTypes`定义了不同的结果处理方式,例如可以重定向到另一个页面或执行特定的动作。拦截器(Interceptors)则是在动作执行前后进行的预处理或后处理操作,如权限验证、数据绑定等。Struts2通过定义...

    struts2 fielderror去掉样式

    开发者可能需要深入理解Struts2的拦截器(Interceptors)、结果类型(Result Types)以及模板引擎(如Freemarker或JSP)的工作原理。 在文件名称列表中,我们看到两个文件:`fielderror_span.ftl`和`fielderror.ftl...

    struts2与json整合

    &lt;result-type name="json" class="org.apache.struts2.json.JSONResult"/&gt; &lt;/result-types&gt; &lt;interceptor name="json" class="org.apache.struts2.json.JSONInterceptor"/&gt; ``` 这样,Struts2就能够识别`...

    struts2最常用的几个类库

    9. **Struts2 Action and Result Types**:例如,`struts2-struts1-plugin.jar`允许Struts2与Struts1应用进行交互,而`struts2-gwt-plugin.jar`则提供了与Google Web Toolkit(GWT)的集成。 10. **Struts2 ...

    Jquery与struts2

    **jQuery与Struts2整合详解** 在Web开发中,jQuery是一个强大的JavaScript库,它极大地简化了JavaScript的使用,使得前端交互更加便捷高效。而Struts2作为一款成熟的MVC框架,广泛应用于Java后端开发,提供了强大的...

    Struts2与JSON

    &lt;result-type name="json" class="org.apache.struts2.json.JSONResult"/&gt; &lt;/result-types&gt; ``` 2. **创建Action类**: 创建一个Struts2 Action类,处理表单提交并返回结果。例如: ```java public class ...

    struts2图片上传并预览

    Struts2是一个强大的Java web应用程序框架,用于构建和部署可维护、高性能的MVC(Model-View-Controller)架构的应用程序。在Web开发中,图片上传和预览是常见的功能需求,尤其对于用户交互丰富的应用来说。Struts2...

    struts2框架做的学生信息查询系统

    4. **结果类型(Result Types)**:Struts2支持多种结果类型,如`dispatcher`(默认,将结果页面作为HTTP响应返回给客户端)、`redirect`(重定向到新的URL)等。在查询操作完成后,Action可能会返回一个结果类型,...

    struts2实现用户登录注册

    Struts2框架是基于Action和Result的设计模式,它的主要组件包括Action类、配置文件(struts.xml)、拦截器(Interceptors)以及结果类型(Result Types)。Action类是业务逻辑的载体,处理用户的请求;配置文件用于...

    json struts2转换

    首先,`struts2-core-2.1.6.jar`是Struts2的核心库,包含了框架的基础组件,如Action、Interceptor、Result等。而`struts2-json-plugin-2.1.8.jar`则是Struts2的JSON插件,它提供了对JSON的支持,允许我们在Struts2...

    Struts2 做的留言板

    7. **结果类型(Result Types)** 结果类型定义了Action执行后如何跳转到相应的视图。Struts2内置了一些常见的结果类型,如`dispatcher`(重定向或转发到JSP)、`stream`(用于下载文件)等。在这个项目中,结果...

    struts2培训PPT[F]

    2. **Struts 2 - 2.swf** - 可能涉及了Struts2的配置,如struts.xml配置文件的结构和作用,如何配置Action类、结果类型(Result Types)、全局结果(Global Results),以及常量配置(Constants Configuration)。...

Global site tag (gtag.js) - Google Analytics