Struts2:Action中result的各种转发类型
2015-10-09 19:55
856 查看
源码下载地址:http://download.csdn.net/detail/zhoujing_0424/9239429
Struts2的核心配置文件struts.xml的基本格式为:
1)如果没有为action指定class,默认是ActionSupport。
2)如果没有为action指定method,默认执行action中的execute()方法。
3)如果没有为action指定result,默认值为success。
Struts2为result提供了多种转发类型,常用的有dispatcher、redirect、redirectAction、plainText等。以如下图所示的项目来分别说明这四种转发方式。
![](http://img.blog.csdn.net/20151009200751618?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
1.dispatcher:默认值,内部请求转发
2.redirect:请求重定向
3.redirectAction:重定向到另外一个action
4.plainText:显示原始文件内容
Struts2的核心配置文件struts.xml的基本格式为:
<struts> <package name=" " namespace=" " extends="struts-default"> <action name=" " class=" " method="execute"> <result name=" " type=" ">index.jsp</result> </action> </package> </struts>Action配置的各项默认值为:
1)如果没有为action指定class,默认是ActionSupport。
2)如果没有为action指定method,默认执行action中的execute()方法。
3)如果没有为action指定result,默认值为success。
Struts2为result提供了多种转发类型,常用的有dispatcher、redirect、redirectAction、plainText等。以如下图所示的项目来分别说明这四种转发方式。
1.dispatcher:默认值,内部请求转发
<struts> <package name="zj" namespace="/control" extends="struts-default"> <action name="helloworld" class="cn.zj.action.HelloWorldAction" method="execute"> <result name="success">/WEB-INF/page/hello.jsp</result> </action> </package> </struts>如上代码所示,在浏览器地址栏输入http://localhost:8080/Struts2/control/helloworld,将会转向WEB-INF目录底下page文件夹中的hello.jsp,在hello.jsp中可以通过${属性名}表达式访问action中的属性。
2.redirect:请求重定向
<struts> <package name="zj" namespace="/control" extends="struts-default"> <action name="redirect"> <result type="redirect">/index.jsp</result> </action> </package> </struts>如上代码所示,访问URL为http://localhost:8080/Struts2/control/redirect,会重定向到http://localhost:8080/Struts2/index.jsp。注意:浏览器重定向redirect方式无法访问WEB-INF下的jsp文件,WEB-INF下的jsp文件只能由服务器的内部请求转发。
3.redirectAction:重定向到另外一个action
<struts> <package name="zj" namespace="/control" extends="struts-default"> <action name="helloworld" class="cn.zj.action.HelloWorldAction" method="execute"> <result name="success">/WEB-INF/page/hello.jsp</result> </action> <action name="redirectAction"> <result type="redirectAction">helloworld</result><!-- 转向同一个包内的action --> </action> <action name="redirectAction2"> <result type="redirectAction"> <param name="actionName">action2</param><!-- 转向不同包的action --> <param name="namespace">/control2</param> </result> </action> </package> <package name="zj2" namespace="/control2" extends="struts-default"> <action name="action2"> <result type="redirect">/index.jsp</result> </action> </package> </struts>如上代码所示,重定向到另外一个action分为两种情况,一种是重定向到同一个包中的action,这种情况下直接提供actionName即可;另外一种是重定向到不同包中的action,这种情况下需要使用param来指定namespace和actionName。访问URL为http://localhost:8080/Struts2/control/redirectAction会先转向http://localhost:8080/Struts2/control/helloworld,然后转向WEB-INF目录底下page文件夹中的hello.jsp,这里发生了一次请求重定向和一次内部请求转发。访问URL为http://localhost:8080/Struts2/control/redirectAction2会先转向http://localhost:8080/Struts2/control2/action2,然后再转向http://localhost:8080/Struts2/index.jsp,这里发生了两次请求重定向。
4.plainText:显示原始文件内容
<struts> <package name="zj" namespace="/control" extends="struts-default"> <action name="plainText"> <result type="plainText">/index.jsp</result> </action> <action name="plainText2"> <result type="plainText"> <param name="location">/index.jsp</param> <param name="charSet">UTF-8</param><!-- 指定读取文件的编码 --> </result> </action> </package> </struts>plainText显示原始文件内容,例如:当我们需要原样显示jsp文件源代码的时候,我们就可以使用此类型。我们还可以使用param的charSet参数来指定读取文件的编码,这可以用于解决乱码问题。
相关文章推荐
- java---多态
- Java基础知识强化之集合框架笔记52:Map集合之Map集合的遍历 键找值
- Java 任意长度byte数组转换为int数组
- Struts2配置文件讲解
- Java基础知识强化之集合框架笔记51:Map集合之Map集合的功能概述与测试
- java7个小实验
- Java中的CopyOnWrite容器
- java打印日历
- JAVA内存String
- Java基础知识强化之集合框架笔记50:Map集合之Map集合的概述和特点
- 单例模式的七种写法【java】
- 面向对象的多态性
- Java总结篇系列:Java多线程(二)
- java split函数应该注意的问题
- Struts2 访问 Servlet API 的四种方式
- 【解惑】Java方法参数是引用调用还是值调用?
- Java总结篇系列:Java多线程(一)
- Android+Eclipse+Maven环境搭建
- How to use Spring @Component, @Repository, @Service and @Controller Annotations?
- IOS 与JAVA RSA加密解密