- 浏览: 1971935 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (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 3321经常有人在配置Struts1.2的struts-conf ... -
Unable to load configuration. - action - file:/C:/Documents%20and%
2011-12-12 21:34 8003Unable to load configuration. - ... -
Struts2+jQuery+Ajax
2011-11-29 11:05 2895一个简单的Json实例,采用Struts2 + jQuery1 ... -
Struts2 使用”#“获取数据 和不使用“#”号的区别。
2011-09-29 11:43 1200最近使用struts2 做项目时, 如果在后台可以使用两 ... -
struts2 标签 s:optiontransferselect左右下拉列表的使用。
2011-09-24 01:08 1906最近做项目,需要用到struts2中的标签, 自己便研 ... -
Struts2 标签出现'dojo' 未定义 解决方案
2011-09-23 23:09 1337我在做项目用到了struts2中的 s:optiont ... -
Struts2 自定义拦截器,怎么实现先于 action 执行
2011-09-08 00:31 1387在Action前用拦截器是直接return act.invok ... -
struts2自定义拦截器,模拟登陆权限验证
2011-09-08 00:27 2230struts2自定义拦截器一——模拟登陆权限验证 1、h ... -
JSP的Filter对struts2 中的 action拦截不起作用的解决方案.
2011-09-08 00:22 2158好像在web.xml配置filter只能实现对jsp的拦截 ... -
从数据库中获取国际化资源文件的key,然后通过Struts2的标签显示
2011-09-04 13:34 3302首先在mySql数据库中建 ... -
Parse Error at line 2 column 15: Document is invalid: no grammar found.
2011-09-03 00:09 2158今天部署把项目部署到tomcat上面时,发现了一个错误,. ... -
java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputS
2011-08-29 01:02 4011java.lang.NoClassDefFoundError: ... -
java.lang.RuntimeException: Unable to load bean org.apache.struts2.dispatcher.mu
2011-08-29 00:32 1383最近做文件上传的功能时,报如下错误..是因为少了一个jar包的 ... -
Struts2 标记判断List集合和Map集合元素的大小
2011-08-25 20:34 4218比如判断一个list集合中的元素等于或小于0, <!- ... -
Struts2 <s:if> 标签的使用
2011-08-25 16:31 1046标签用法如下: test中是用来,放表达式,不能嵌套EL表达 ... -
Struts2 Caused by: java.lang.IllegalArgumentException: argument type mismatch
2011-08-15 09:27 8815前台页面文本框 name 绑定的属性,与后台属性不一致. ... -
Struts2 一些常见的标签的使用
2011-08-10 00:52 1250直接贴后台代码: package com.struts2.a ... -
Struts2+JQuery+Json登陆实例
2011-07-17 23:21 6284在搭建之前.. 首先,需要准备struts2.0框架的5个核心 ... -
java.lang.NoSuchMethodError: com.opensymphony.xwork2.ActionContext.get(Ljava/lan
2011-07-16 18:47 5494java.lang.NoSuchMethodError: ... -
Struts2通过使用ActionContext类获取request和response对象
2011-07-16 18:23 2816使用ActionContext类这种方法比较简单,我们可以通过 ...
相关推荐
struts2的action的几种result type说明
struts2 跳转类型 result type chain dispatcher redirect redirect action
struts2 常用Result类型(type)的用法 Invalid result location value/parameter错误的解决办法
Struts2 result和type
NULL 博文链接:https://xiongjiajia.iteye.com/blog/1431330
struts2中result类型之redirect,重定向
关于struts2 Result的配置,有例子
从jsp页面提交form表单后,在struts.xml中寻找匹配的action。在action中处理完业务后返回,在struts.xml中的result属性中转向到另外一个action。
Struts2学习资源Result part1.rar
于是就研究使用Struts2的XSLT result方式来做页面显示。 网上相关的内容非常的少,我也研究了好久才玩转的。一开始总是有一些莫名其妙的问题出现,但最后基本上都是和配置相关的比较多。现在这个例子是整个工程项目...
Struts2中的Result的使用类型有很多种,以及各种结果集类型的应用都有涉及(我们老师上课讲的讲义,希望对初学WEB的同学有所帮助)
struts2 配置文件 result 非常详细 希望能帮到你
struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别...
struts2中result类型之redirectAction
NULL 博文链接:https://cdxs2.iteye.com/blog/1926350
在struts2的返回结果配置中,我们大部分情况使用默认的或者chain或者redirect,其实struts2还有很多其他类型的,今天我们就来看一下都有哪些类型。 打开struts2的源码中struts-default.xml文件,我们能看到如下配置
Struts2 Result类型,整理的非常详细!
这是一个struts2框架的处理流程的demo,里面有...struts2 result type类型的基本解释图片;相信对于初学者,通过这个demo可以基本掌握struts2的使用,注意,该demo是纯粹的struts2,没有其他框架内容,请注意甄别......
struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全...
struts2 资料struts2 资料struts2 资料struts2 资料