【Struts2二】结果集(result-type)

在jsp/servlet中,结果集通常是指请求转发和重定向这两种!

Struts2作为框架,提供了基于这两种的更多的结果集!

在struts-default.xml中定义了一些默认的结果集:


         <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>

如何配置结果集呢?

在struts的配置中,使用result标签来表示结果集:

< result type = "redirect" name = "redirect"> / resulttype/resulttype.jsp </result >

type:表示结果集的类型

name:与Action中方法的返回值相互对应!

常见的type有三种:dispatcher,redirect,redirectAction

下面详细介绍一下这三种结果集:

1.创建一个struts-resulttype.xml文件:

在struts.xml文件中,使用inclue将上述文件引入:

< include file = "struts-resulttype.xml" ></include >

struts-resulttype.xml:


<?xml version= "1.0" encoding ="UTF-8" ?>

<!DOCTYPE struts PUBLIC

"-//Apache
Software Foundation//DTD Struts Configuration 2.0//EN"

"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

<package name="resulttype" namespace="/" extends="struts-default" >

<!--

全局结果集:当某个方法返回为name属性对应的值时,就调用全局结果集进行处理。

可以用来进行通用错误页面的处理。

-->

<global-results>

<result name="error" >errot/error.jsp</ result>

</global-results>

<!-- 测试请求转发 
-->

<action name= "dispatcherAction" method="testDispatcher" class="cn.itheima03.struts2.resulttype.ResultTypeAction" >

<!--

<result type="" name=""></result> :

result标签代表一种结果集,在struts-default.xml中定义了一写结果集

type

dispatcher  转发  默认值

redirect    重定向

redirectAction  重定向到一个action

name

success 默认值

method="testDispatcher"

-->

<result type= "redirect" name="redirect" >/ resulttype/resulttype.jsp</result >

</action>

<!-- 测试重定向

浏览器中的 url会发生变化:

http://localhost/itheima03_struts2/resulttype/resulttype.jsp

-->

<action name= "redirectAction" method="testRedirect" class="cn.itheima03.struts2.resulttype.ResultTypeAction" >

<result type= "redirect" name="redirect" >/ resulttype/resulttype.jsp</result >

</action>

<!--

测试重定向到一个action

浏览器的地址栏会变成:

http://localhost/itheima03_struts2/dispatcherAction!testDispatcher.action

-->

<action name= "redirectActionAction" method="testRedirectAction" class="cn.itheima03.struts2.resulttype.ResultTypeAction" >

<result type= "redirectAction" name="redirectAction" >dispatcherAction!testDispatcher.action </result>

</action>

<!-- 测试全局结果集的处理

当自己定义的name属性的值和全局结果集name属性值一直时,自己定义的优先!

1.当自己的name=‘error‘时,使用自己定义的结果集;

2.当自己的name!=‘error‘时,如果访问的方法返回的是"error",那么调用全局结果集进行处理!

-->

<action name= "globalResultAction_*" method ="{1}" class="cn.itheima03.struts2.resulttype.ResultTypeAction" >

<result name="error" >resulttype/resulttype.jsp</ result>

</action>

</package >

</struts>

2.Action的处理:


import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class ResultTypeAction extends ActionSupport{

/**

* 测试请求转发结果集:type为dispatcher

* <result type="dispatcher" name="dispatcher">/resulttype/resulttype.jsp </result>

*/

public String
testDispatcher(){

ServletActionContext. getRequest().setAttribute("aa", "aadda");

//        return "error";//测试全局结果集

return "dispatcher" ;

}

/**

* 测试重定向

*/

public String
testRedirect(){

ServletActionContext. getRequest().setAttribute("aa", "aaa");

return "redirect" ;

}

/**

* 测试重定向到一个action

* <result type="redirectAction" name="redirectAction">dispatcherAction!testDispatcher.action</result>

*/

public String
testRedirectAction(){

ServletActionContext. getRequest().setAttribute("aa", "aaa");

return "redirectAction" ;

}

/**

* 测试全局结果集

* 返回值要和全局结果集的name属性值要对应!

*        <global-results>

<result name="error">errot/error.jsp </result>

</global-results>

*

@return

*/

public String
globle(){

return "error" ;

}

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-27 13:56:05

【Struts2二】结果集(result-type)的相关文章

struts2 跳转类型 result type=chain、dispatcher、redirect(redirect-action)

dispatcher 为默认跳转类型,用于返回一个视图资源(如:jsp) Xml代码 : <result name="success">/main.jsp</result> <result name="success">/main.jsp</result> 以上写法使用了两个默认,其完整的写法为: <result name="success" type="dispatcher&quo

struts2.xml 中result type属性说明

chain           用来处理Action链,被跳转的action中仍能获取上个页面的值,如request信息.           com.opensymphony.xwork2.ActionChainResult       dispatcher           用来转向页面,通常处理JSP           org.apache.struts2.dispatcher.ServletDispatcherResult       freemaker           处理Fr

result type struts2标签

<result type=""></result> type属性的值共有10个: <result-types> <result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/> <result-type name="dispatcher" class="org.apache.

Struts2 中result type属性说明

Struts2 中result type属性说明 首先看一下在struts-default.xml中对于result-type的定义: <result-types><result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/><result-type name="dispatcher" class="org.apac

struts2学习笔记之七:Result类型

一:关于Struts2的type类型,也就是Result类型,他们都实现了共同的接口Result,都实现了execute方法 他们体现了策略模式,具体Result类型参见:struts-default.xml文件: <result-types> <result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/> <result-type name=&

struts2(二)

1:Stream <result-type name="stream" class="org.apache.struts2.result.StreamResult"/> A custom Result type for sending raw data (via an InputStream) directly to the HttpServletResponse. Very useful for allowing users to download c

Struts2中自定义的Result

引言 所谓自定义Result,就是由我们自行开发Result,而不是使用由Struts2预定义的result. 在实际的开发中使用自定义的result机会不大,因为常见的各种页面展示技术,都有struts2给我们做的比较好好的. 自定义的Result 观看Result的源码如下: public interface Result extends Serializable { /** * Represents a generic interface for all action execution

Scala:Method 小技巧,忽略result type之后的等号

1 var x = 0 2 3 def IncreaseOne(): Int = { 4 x += 1 5 x 6 } 7 8 def IncreaseOne() = { 9 x += 1 10 x 11 } 12 13 def IncreaseOne = { 14 x += 1 15 x 16 } 17 18 19 def IncreaseOne(): Unit = { 20 x += 1 21 x 22 } 23 24 def IncreaseOne() { 25 x += 1 26 x 2

Struts2 Problem Report: No result defined for action ... and result exception

每    当Struts2爆出这样的异常,会很郁闷,原因太多了,只能一一的检查.有的说input页面没指定,有的说namespace有问题,有的说你对应的result有问题,有的说validate不通过,等等.但是在这里,我却不是,我无论如何都找不到原因,差不多花了两个钟,我无意中使用Struts2异常处理页面,把异常信息打印输出来(Integer不能转化为String ),我才知道原因的所在,原来是在Service层代码里执行hql语句时,传入的参数应该为String类型,我却把它弄为Inte