- 浏览: 1990078 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (509)
- JavaEE (122)
- Oracle数据库 (29)
- JavaScript (37)
- SAP (5)
- MySql数据库 (7)
- JavaSE (4)
- Ajax (1)
- jQuery (13)
- SSH框架 (36)
- Web Service (10)
- JSF框架 (2)
- JBPM (0)
- ireport报表 (2)
- ibatis (5)
- Hibernate (31)
- JSP (11)
- Tomcat 服务器 (20)
- Other (19)
- JavaWeb (4)
- Maven (11)
- OSWorkFlow (10)
- HTML (13)
- Exception汇总 (7)
- SVN (2)
- 笑话 (1)
- JSTL (1)
- WebSphere Message Broker (13)
- ANT命令 (3)
- Liunx (12)
- Struts2 (26)
- Eclipse (6)
- DOS (3)
- Flex (11)
- WebSphere (1)
- 开发常用工具 (3)
- Junit (2)
- EJB (4)
- Struts1.2 (2)
- Jboss (1)
- Android (2)
- Java框架源码解析 (1)
- Spring (4)
- MyBatis (6)
- SpringMVC (4)
- Jetty (2)
- 数据库表设计 (1)
- SSO (4)
最新评论
-
贝塔ZQ:
也可以试试PageOffice插件,觉得更简单点
Jxl操作Excel设置背景、字体颜色、对齐方式、列的宽度 -
jia1208:
...
Could not publish server configuration for Tomcat v6.0 Server at localhost. -
u011274527:
赞
java.io.EOFException java.io.ObjectInputStream$PeekInputStream.readFully 错误 -
旭旭小牛啦:
怎么没哟了,继续赛
jQuery 选择器 -
wzw3919:
100行会报空指针
Java 解压缩zip文件
可以在struts2-core-{version}.jar中找到struts-default.xml,里面列举了当前可以使用的所有result-type以及对应的class
此处是struts2.2.3的
- <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" />
- </result-types>
1.chain
该类型是请求转发给其他的action,如果为jsp则会报错
需要注意的就是与redirect的区别,请求转发是还在当前请求,
而redirect会响应一次浏览器然后浏览器再根据响应请求重定向的资源,注意看url的变化就明白了!
下面是apache给的示例,这个比较简单,没什么说的,
2.dispatcher 请求转发视图资源,比如jsp,html,如果请求action会找不到资源, 请求转发的问题看1中的说明 apache给的示例。。也没啥说的
- <package name="public" extends="struts-default">
- <!-- Chain creatAccount to login, using the default parameter -->
- <action name="createAccount" class="...">
- <result type="chain">login</result>
- </action>
- <action name="login" class="...">
- <!-- Chain to another namespace -->
- <result type="chain">
- <param name="actionName">dashboard</param>
- <param name="namespace">/secure</param>
- </result>
- </action>
- </package>
- <package name="secure" extends="struts-default" namespace="/secure">
- <action name="dashboard" class="...">
- <result>dashboard.jsp</result>
- </action>
- </package>
3.httpheader 这个挺有意思的,可以随便更改响应状态 比如下面的这个示例
- <result name="success" type="dispatcher">
- <param name="location">foo.jsp</param>
- </result>
当action返回SUCCESS的时候,会将响应状态修改为400,客户端错误的请求, 还有其他的状态可以自行尝试,比如为100时,浏览器会在请求一段时间之后继续当前页面,500则为服务器内部错误等等 具体为什么会产生这样的结果,当然得把源码翻出来了 下面是HttpHeaderResult的一些成员变量,private的可以作为param的name属性
- <action name="test" class="com.iss.action.TestAction">
- <result name="success" type="httpheader">
- <param name="status">400</param>
- </result>
- </action>
下面是具体执行操作过程,可以看到response.setStatus等操作
- private static final long serialVersionUID = 195648957144219214L;
- /** The default parameter */
- public static final String DEFAULT_PARAM = "status";
- private boolean parse = true;
- private Map<String,String> headers;
- private int status = -1;
- private int error = -1;
- private String errorMessage;
4.redirect
- public void execute(ActionInvocation invocation) throws Exception {
- HttpServletResponse response = ServletActionContext.getResponse();
- ValueStack stack = ActionContext.getContext().getValueStack();
- if (status != -1) {
- response.setStatus(status);
- } else if (error != -1) {
- if (errorMessage != null) {
- String finalMessage = parse ? TextParseUtil.translateVariables(
- errorMessage, stack) : errorMessage;
- response.sendError(error, finalMessage);
- } else
- response.sendError(error);
- }
- if (headers != null) {
- for (Iterator iterator = headers.entrySet().iterator();
- iterator.hasNext();) {
- Map.Entry entry = (Map.Entry) iterator.next();
- String value = (String) entry.getValue();
- String finalValue = parse ? TextParseUtil.translateVariables(value, stack) : value;
- response.addHeader((String) entry.getKey(), finalValue);
- }
- }
- }
重定向操作,与请求转发的区别看1的介绍
让客户端请求另外的网络资源,可以为action,也可以为视图资源
下面是apache的示例
- <result name="success" type="redirect">
- <param name="location">foo.jsp</param>
- <param name="parse">false</param>
- </result>
重定向至Action,与redirect的区别找了好久,但是也没发现比较权威的说明
最明显的区别当然是redirectAction只能请求action,如果请求视图资源会报错
然后还有个小区别就是redirectAction会为url添加.action后缀而redirect不会
有说redirectAction无法通过url传参,但是我测试时完全可以通过request获取到,
此处区别如果有哪位知道的麻烦告知,Thank you!
下面是apache的传参的示例
- <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=pie&width=100&height=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>
6.stream
这个返回类型主要用作下载文件或者在浏览器上显示PDF等文档
此处给一个显示PDF文档示例
项目web.xml中
- <mime-mapping>
- <extension>pdf</extension>
- <mime-type>application/pdf</mime-type>
- </mime-mapping>
struts.xml中
- <action name="test" class="com.iss.action.TestAction">
- <result name="success" type="stream">
- <param name="contentType">application/pdf</param>
- <param name="inputName">inputStream</param>
- <param name="contentDisposition">filename="a.pdf"</param>
- </result>
- </action>
TestAction.java中
- public class TestAction extends ActionSupport
- {
- private InputStream inputStream;
- public InputStream getInputStream()
- {
- return inputStream;
- }
- @Override
- public String execute() throws Exception
- {
- inputStream = new FileInputStream("xxxxx/a.pdf");//要下载或显示的文件路径
- return SUCCESS;
- }
- }
7.plainText
响应以plain形式返回给客户端
截取源码的最重要的一部分
- if (charset != null) {
- response.setContentType("text/plain; charset="+charSet);
- }
- else {
- response.setContentType("text/plain");
- }
8.freemarker,velocity,xslt
没有尝试过,有兴趣的可以尝试下
引用通告地址: http://tmsoft.lsxy.com/trackback.php?tbID=992&extra=010228
发表评论
-
java.lang.NoSuchMethodException: No such accessible method: addForwardConfig() o
2012-06-07 00:07 3378经常有人在配置Struts1.2的struts-conf ... -
Unable to load configuration. - action - file:/C:/Documents%20and%
2011-12-12 21:34 8035Unable to load configuration. - ... -
Struts2+jQuery+Ajax
2011-11-29 11:05 2927一个简单的Json实例,采用Struts2 + jQuery1 ... -
Struts2 使用”#“获取数据 和不使用“#”号的区别。
2011-09-29 11:43 1222最近使用struts2 做项目时, 如果在后台可以使用两 ... -
struts2 标签 s:optiontransferselect左右下拉列表的使用。
2011-09-24 01:08 1930最近做项目,需要用到struts2中的标签, 自己便研 ... -
Struts2 标签出现'dojo' 未定义 解决方案
2011-09-23 23:09 1366我在做项目用到了struts2中的 s:optiont ... -
Struts2 自定义拦截器,怎么实现先于 action 执行
2011-09-08 00:31 1418在Action前用拦截器是直接return act.invok ... -
struts2自定义拦截器,模拟登陆权限验证
2011-09-08 00:27 2261struts2自定义拦截器一——模拟登陆权限验证 1、h ... -
JSP的Filter对struts2 中的 action拦截不起作用的解决方案.
2011-09-08 00:22 2191好像在web.xml配置filter只能实现对jsp的拦截 ... -
从数据库中获取国际化资源文件的key,然后通过Struts2的标签显示
2011-09-04 13:34 3331首先在mySql数据库中建 ... -
Parse Error at line 2 column 15: Document is invalid: no grammar found.
2011-09-03 00:09 2211今天部署把项目部署到tomcat上面时,发现了一个错误,. ... -
java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputS
2011-08-29 01:02 4042java.lang.NoClassDefFoundError: ... -
java.lang.RuntimeException: Unable to load bean org.apache.struts2.dispatcher.mu
2011-08-29 00:32 1414最近做文件上传的功能时,报如下错误..是因为少了一个jar包的 ... -
Struts2 标记判断List集合和Map集合元素的大小
2011-08-25 20:34 4251比如判断一个list集合中的元素等于或小于0, <!- ... -
Struts2 <s:if> 标签的使用
2011-08-25 16:31 1071标签用法如下: test中是用来,放表达式,不能嵌套EL表达 ... -
Struts2 Caused by: java.lang.IllegalArgumentException: argument type mismatch
2011-08-15 09:27 8850前台页面文本框 name 绑定的属性,与后台属性不一致. ... -
Struts2 一些常见的标签的使用
2011-08-10 00:52 1273直接贴后台代码: package com.struts2.a ... -
Struts2+JQuery+Json登陆实例
2011-07-17 23:21 6321在搭建之前.. 首先,需要准备struts2.0框架的5个核心 ... -
java.lang.NoSuchMethodError: com.opensymphony.xwork2.ActionContext.get(Ljava/lan
2011-07-16 18:47 5532java.lang.NoSuchMethodError: ... -
Struts2通过使用ActionContext类获取request和response对象
2011-07-16 18:23 2850使用ActionContext类这种方法比较简单,我们可以通过 ...
相关推荐
在Struts2中,Result Type是控制流程的重要部分,用于定义动作执行后如何转发或重定向到特定的视图。这篇博客文章将深入探讨Struts2的Result Type,以及它在实际应用中的工作原理。 首先,我们需要了解Struts2的...
在`struts-default.xml`配置文件中,我们可以看到Struts2支持多种内置的Result Type。 1. **dispatcher** (默认): 这是最常见的Result Type,它使用Servlet Dispatcher将请求转发到指定的JSP页面或Servlet。`class=...
Struts2 中常用 Result 类型(type)的用法和出现的问题 Struts2 中的 Result 类型(type)是指在 Struts2 框架中用于确定 action 执行结果的方式。常用的 Result 类型有 dispatcher、redirect 和 chain 三种。这三...
struts2 跳转类型 result type chain dispatcher redirect redirect action
Struts2 框架中 Result 配置是一种非常重要的配置,它直接影响着应用程序的执行结果。Result 配置通常用于定义 Action 的执行结果,例如将结果.redirect 到一个新的 URL,或者将结果.render 到一个 JSP 页面。Struts...
### Struts2 Result 转向到 Action 的深入解析 #### 一、基本概念与应用场景 **Struts2** 是一款流行的 Java Web 开发框架,它支持多种开发模式(如 MVC),并提供了一系列用于简化 Web 应用程序开发的功能。在 ...
Struts2 Result类型是Struts2框架中一个关键的概念,它是动作执行完成后跳转到下一个页面或处理逻辑的核心机制。Result类型定义了如何处理动作执行的结果,使得开发者能够灵活地控制应用程序的流程。 首先,我们...
在Struts2框架中,`Result`类型是动作(Action)执行后的一种处理方式,它定义了动作执行完后页面跳转或者数据处理的行为。`Redirect`是`Result`类型中的一种,它涉及到Web应用程序中的URL重定向概念,对用户浏览器...
### Struts2中的Result与Type详解 #### 一、引言 在Struts2框架中,`Result`和`Type`是两个非常重要的概念。它们主要用于控制Action执行完毕后页面的跳转方式以及如何处理Action返回的结果。通过合理配置`Result`与...
Result是Struts2框架中的一个核心组件,它负责处理动作执行后的结果,如视图渲染、跳转等操作。在Struts2的学习过程中,理解并熟练运用Result类型是至关重要的。 在Struts2中,Result主要负责将处理后的数据传递给...
在Struts2中,结果(Result)是Action执行后控制流程的重要部分,它负责将处理后的数据或者控制逻辑转向合适的视图。这篇博文将深入探讨Struts2中的result配置以及各种视图转发类型。 首先,让我们理解Result的基本...
"redirectAction"是Struts2中的一种Result类型,专门用于实现HTTP级别的重定向。 重定向是一种HTTP响应状态码,通常是302或303,它告诉浏览器去请求另一个URL。与传统的转发(forward)不同,转发是服务器内部的...
这篇博文将深入探讨Struts2的XSLTResult结果类型及其工作原理。 XSLT(Extensible Stylesheet Language Transformations)是一种转换XML文档的样式表语言。通过应用XSLT,可以将XML数据转换成HTML、PDF或其他格式,...
Struts2 Result类型是Struts2框架中一个关键的概念,它是控制Action执行后响应到何处的重要组件。在处理用户请求并执行相应的业务逻辑后,Action需要将结果返回给客户端,而Result类型就是用来定义这个返回过程的...
于是就研究使用Struts2的XSLT result方式来做页面显示。 网上相关的内容非常的少,我也研究了好久才玩转的。一开始总是有一些莫名其妙的问题出现,但最后基本上都是和配置相关的比较多。现在这个例子是整个工程项目...
标题中的“难经3:Struts2,拦截器拦不住Result?”揭示了这是一个关于Struts2框架中拦截器(Interceptor)与结果(Result)交互问题的讨论。在Struts2框架中,拦截器是实现业务逻辑和控制逻辑之间解耦的重要机制,而...
在Struts2中,`Result`标签是核心组件之一,用于定义动作执行后如何跳转到相应的视图。让我们深入探讨一下`Result`标签的使用以及在Struts2框架中的作用。 ### 1. Struts2框架概述 Struts2框架基于MVC设计模式,...
Struts2中的Result的使用类型有很多种,以及各种结果集类型的应用都有涉及(我们老师上课讲的讲义,希望对初学WEB的同学有所帮助)
### Struts2配置文件中的Result详解 在Struts2框架中,`result`是一个非常重要的概念,它主要用于定义Action执行完成后页面的跳转规则。本文将深入探讨Struts2配置文件中`result`的配置方法及其不同的类型,并通过...
Struts2的核心jar包通常包括以下几个部分: 1. **struts2-core.jar**:这是Struts2的核心库,包含了框架的主要组件,如Action、Result、Interceptor等。它定义了请求处理的流程,提供了ActionContext、ValueStack等...