转自:
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"可能包含了一个演示如何使用Struts2实现文件上传功能的项目。文件上传是Web应用中常见的需求,它允许用户上传文件到服务器。 在Struts2中,处理文件上传主要依赖于Apache Commons ...
Struts2是Java Web开发中的一个强大框架,它基于Model-View-Controller(MVC)设计模式,旨在简化企业级应用程序的开发流程。《Struts2权威指南》是一本全面覆盖Struts2框架的详尽教程,共计728页,以PDF格式提供,...
在实际开发中,导入Struts2的jar包后,还需要进行相应的配置工作,包括Web.xml中的Servlet配置、struts.xml中的Action配置以及项目的其他设置。通过这些配置,开发者能够有效地组织和控制应用的行为,提高开发效率和...
在Struts2中集成JSON(JavaScript Object Notation)技术,可以让应用与客户端进行更高效的数据交互,通常用于Ajax(Asynchronous JavaScript and XML)请求。JSON因其轻量级和易于解析的特性,在Web服务和前端数据...
2. **配置文件**:Struts2使用XML配置文件(struts.xml)来定义Action、结果类型、拦截器等,也可以使用注解进行简化配置。 3. **Interceptor(拦截器)**:拦截器是Struts2的一个强大特性,它们在Action调用前后...
6. **结果类型(Result Types)**:Struts2的结果类型定义了Action执行后的跳转方式,可以是JSP、FreeMarker模板、直接返回JSON或XML等。这使得视图层的渲染更加多样化。 7. **OGNL(Object-Graph Navigation ...
在这个"Sturts2整合Hibernate连接MySQL数据库"的实例中,我们将探讨如何将这三个技术有效地结合在一起,以便在Web应用中执行CRUD(创建、读取、更新和删除)操作。 首先,集成Struts2和Hibernate需要设置相关的依赖...
【标题】"s2s3m3 sturts2+mybatis3+spring2整合" 涉及到的是一个经典的Java企业级开发框架集成,主要用于构建高效、可维护的Web应用程序。在这个项目中,Struts2作为MVC(Model-View-Controller)架构的前端控制器,...
在这个“Sturts 2 框架在线答疑系统”中,核心功能是实现Struts验证,这涉及到表单数据的验证和错误处理,对于提升用户体验和确保数据准确性至关重要。 **Struts 2 框架概述** Struts 2 是Apache软件基金会下的一个...
"Sturts2第二部分"可能是指由于文件大小限制,将Struts2的完整压缩包分为两个部分进行上传,这部分包含了Struts2框架的后续内容。 在`src`目录下,通常会包含Struts2框架的源代码。源码是理解框架工作原理的关键,...
在"sturts2.0项目代码"中,我们可以看到一个初学者学习并实践Struts2.0框架的过程,这些代码主要涵盖了基础的使用场景。 1. **模型(Model)**:在Struts2中,模型通常由JavaBeans或POJO(Plain Old Java Object)...
在Maven项目中,Struts2的相关依赖会写入`pom.xml`文件。 在`maven-SturtsWeb-demo`项目中,你可能会看到以下组件: 1. **src/main/java**: 存放源代码,包括Struts2的Action类和其他业务逻辑。 2. **src/main/...
@Action(value = "download", results = { @Result(name = "success", type = "stream", params = { "contentType", "application/octet-stream", "inputName", "fileInputStream", "contentDisposition", ...
在“Sturts2课件第三天”的学习中,我们可能会涉及以下关键知识点: 1. **Struts2架构**:理解Struts2的核心组件和工作流程,包括Action、Result、Interceptor、Plug-in等,以及它们在请求处理中的作用。 2. **...
本文将深入探讨Struts2的验证机制,主要聚焦于`Login-validation.xml`配置文件,它是Struts2中用于表单验证的重要组成部分。 在Struts2中,验证是通过一个称为拦截器(Interceptor)的机制来实现的,这些拦截器在...
同时,还需要配置struts2的核心配置文件(struts.xml),指定Action映射、拦截器栈以及全局配置。为了保证应用的安全性,开发者还需要关注Struts2的安全更新,因为框架历史上曾出现过一些安全漏洞,及时更新到最新版本...
2. **Action配置**:在Struts2的配置文件(struts.xml)中,定义Action类和对应的Result,其中Result类型可以设置为"json",以便返回JSON数据。 3. **数据绑定**:Struts2的JSON插件可以自动将Java对象转换为JSON,...
1. **核心架构**:Struts2的核心是Action和Result。Action是业务逻辑的载体,而Result负责将Action的执行结果呈现给用户。Action和Result通过配置文件或注解进行关联,形成了请求处理的流程。 2. **拦截器...
- **应用场景**:在Struts2中,OGNL主要用于配置文件中定义动态的值以及Action类中进行复杂的属性访问。 - **示例**:如在配置文件中使用OGNL来设置Action的属性。 **2. 文件上传:** - **定义**:Struts2支持文件...
在本实例中,Struts2作为前端控制器,接收用户请求,根据配置的Action和Result,转发到相应的服务和视图。Struts2与Spring的集成使得我们可以方便地在Action类中注入Spring管理的Bean,实现业务逻辑。 整合步骤: ...