struts2 strus.xml中result类型及含义
Struts2.xml中result type属性说明
一.struts2.xml 中result type属性说明1.chain:用来处理Action链,被跳转的action中仍能获取上个页面的值,如request信息。
com.opensymphony.xwork2.ActionChainResult2.dispatcher:用来转向页面,通常处理JSPorg.apache.struts2.dispatcher.ServletDispatcherResult3.freemaker:处理FreeMarker模板org.apache.struts2.views.freemarker.FreemarkerResult4.httpheader:控制特殊HTTP行为的结果类型org.apache.struts2.dispatcher.HttpHeaderResult5.stream:向浏览器发送InputSream对象,用来处理文件下载,还可用于返回AJAX数据org.apache.struts2.dispatcher.StreamResult6.velocity :处理V elocity模板org.apache.struts2.dispatcher.V elocityResult7.xsl:处理XML/XLST模板org.apache.struts2.views.xslt.XSLTResult8.plainText:显示原始文件内容,例如文件源代码org.apache.struts2.dispatcher.PlainTextResult9.plaintext:显示原始文件内容,例如文件源代码org.apache.struts2.dispatcher.PlainTextResult10.redirect:重定向到一个URL ,被跳转的页面中丢失传递的信息,如requestorg.apache.struts2.dispatcher.ServletRedirectResult11.redirectAction :重定向到一个Action ,跳转的页面中丢失传递的信息,如requestorg.apache.struts2.dispatcher.ServletActionRedirectResult12.redirect-action:重定向到一个Action ,跳转的页面中丢失传递的信息,如requestorg.apache.struts2.dispatcher.ServletActionRedirectResult二.redirect与redirect-action区别一、使用redirect需要后缀名使用redirect-action不需要后缀名二、type="redirect"的值可以转到其它命名空间下的action,而redirect-action只能转到同一命名空下的action,因此它可以省略.action的后缀直接写action的名称。
2struts2中常用的配置文件及result返回类型
1.web.xml文件主要完成对StrutsPrepareAndExecuteFilter的配置(在以前的版本中是对FilterDispatcher配置,新版本同样支持用FilterDispatcher配置),它的实质是一个过滤器,它负责初始化整个Struts框架并且处理所有的请求。
这个过滤器可以包括一些初始化参数,有的参数指定了要加载哪些额外的xml 配置文件,还有的会影响struts框架的行为。
除了StrutsPrepareAndExecuteFilter外,Struts还提供了一个ActionContexCleanUp类,它的主要任务是当有其它一些过滤器要访问一个初始化好了的struts框架的时候,负责处理一些特殊的清除任务。
2.struts.xml文件框架的核心配置文件就是这个默认的struts.xml文件,在这个默认的配置文件里面我们可以根据需要再包括其它一些配置文件。
在通常的应用开发中,我们可能想为每个不同的模块单独配置一个struts.xml文件,这样也利于管理和维护。
这也是我们要配置的主要文件3.struts.properties(参default.properties)在Struts框架使用了很多属性,我们可以通过改变这些属性来满足我们的需求。
要改变这些属性,只需在struts.properties文件中指定属性的key和value即可。
属性文件可以放在任何一个包含在classpath中的路径上,但是通常我们都把它放在/WEB-INF/classes目录下面。
我们可以在struts-default.properties文件中找到一个属性的列表。
4.struts-default.xml此文件是struts2框架默认加载的配置文件,它定义了struts2一些核心bean和拦截器,它会自动包含(included)到struts.xml文件中(实质是通过<package extends="struts-default">),并为我们提供了一些标准的配置。
java_Struts2在Action中result的四种转发类型
java_Struts2在Action中result的四种转发类型java_Struts2在Action中result的四种转发类型部分内容是⽹上转载的,⽹⽹整合了⽹下在struts2中为result提供了多种类型,常⽹的类型有:dispatcher(默认),redirect,redirectAction,plainText。
在result中还可以使⽹${属性名}访问action中的属性,表达式中的属性名对应action中的属性。
<resulttype="redirect">/index.jsp?id=${id}</result>1.redirect是重定向到某个路径、视图<!-- 直接重定向 --><action name="redirect"><resulttype="redirect">/employeeAdd.jsp?username=${username}</r esult></action>URLEncoder.encode("传智播客","UTF-8");取值解码在前台<% = URLDecoder.decode(new String(request.getParameter("username").getBytes("ISO8859-1"),"UTF-8"),"UTF-8") %> 2.redirectAction重定向到Action 如果重定向的action中在同⽹个package下:<result type="redirectAction">helloworld</result>如果重定向的action在别的package下:<result type="redirectAction"><param name="namespace">/login</param><param name="actionName">list</param></result>3.当需要显⽹⽹件内容,⽹如:原样显⽹jsp⽹件源代码时就⽹plainText<result name="source" type="plainText"><param name="location">/index.jsp</param><!-- 指定读取⽹件的编码 --><param name="charSet">UTF-8</param></result>---------------------------------------------------------------------------------为Action的属性注⽹值要实现依赖注⽹必须提供Set⽹法<package name="itcast" namespace="/control/employee" extends="struts-default"><action name="list" class="cn.itcast.action.HelloWorldAction" method="execute"> <!--给Action中的savepath属性注⽹的值 --><param name="savepath">/images</param><result name="success">/WEB-INF/page/message.jsp</result></action></package>全局视图的这段代码放在某个<package></package>代码段中的Action是公⽹视图外如果想定义全局的话可以<package name="base" extends="struts-default"><global-results><result name="message">/WEB-INF/page/message.jsp</result></global-results></package>其它包继承 extentds="base"就OK 各个包中的Action使⽹公共视图就这样定义全局视图。
Result结果类型详解
Result结果类型详解1. 配置Result在 struts.xml ⽂件中,<result> 元素⽤于配置 Result 逻辑视图与物理视图之间的映射关系,它有两个可选属性 name 和 type。
其中,name 属性⽤于指定逻辑视图的名称,默认值为 success;type 属性⽤于指定返回的视图资源的类型,不同的类型代表不同的结果输出,它的默认值是 dispatcher。
<action name="loginAction" class="com.mengma.action.LoginAction"><result name="success" type="dispatcher"><param name="location">/success.jsp</param></result></action><!-- Action 配置了⼀个 name 为 success 的 Result 映射,该映射的值可以是 JSP 页⾯,也可以是⼀个 Action 的 name 值; 这⾥使⽤ param ⼦元素为其指定了 Result 映射对应的物理视图资源为 success.jsp。
--><param> ⼦元素的 name 属性有两个值:location:指定该逻辑视图所对应的实际视图资源。
parse:指定在逻辑视图资源名称中是否可以使⽤ OGNL(对象图导航语⾔)表达式。
默认值为 true,表⽰可以使⽤,如果设为false,则表⽰不⽀持。
简化上⾯的代码:<action name="loginAction" class="com.mengma.action.LoginAction"><result>/success.jsp</result></action>需要注意的是,在 Result 配置中指定实际资源位置时,可以使⽤绝对路径,也可以使⽤相对路径。
struts2_resultType
首先看一下在struts-default.xml中对于result-type的定义:<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>chain:用来处理Action链,被跳转的action中仍能获取上个页面的值,如request信息. dispatcher:用来转向页面,通常处理JSP.freemaker:处理FreeMarker模板.httpheader:控制特殊HTTP行为的结果类型.redirect:重定向到一个URL,被跳转的页面中丢失传递的信息,如request. redirectAction:重定向到一个Action,跳转的页面中丢失传递的信息.stream:向浏览器发送InputSream对象,通常用来处理文件下载,还可用于返回AJAX数据. velocity:处理Velocity模板.xslt:处理XML/XLST模板.plainText:显示原始文件内容,例如文件源代码.重点说一下redirect和redirectAction的区别:(1)使用redirect需要后缀名,使用redirect-action可以不需要后缀名.(2)type="redirect"的值可以转到其它命名空间下的action,而redirect-action只能转到同一命名空下的action,因此它可以省略.do的后缀直接写action的名称.1、dispatcher结果类型Struts2在后台使用Servlet API 的RequestDispatcher来转发请求,因此在用户的整个请求/响应过程中,目标Servlet/JSP接收到的request/response对象,与最初的Servlet/JSP相同。
struts2之struts.xml详解
struts2之struts.xml详解1.struts.xml概述struts.xml 为Struts 2的核心配置文件。
struts.xml中主要配置Struts项目的一些全局的属性,用户请求和响应Action之间的对应关系,以及配置Action 中可能用到的参数,以及处理结果的返回页面。
还包括各种拦截器的配置等。
struts.xml的DTD(Document Type Definition)描述如下:<!ELEMENT struts (package|include|bean|constant)*><!--struts标签下可以出现下面标签0次或多次package:将多个action组织成一个package的方式。
include:用来包含一个配置文件,目的是为了配置文件能够分离。
bean:被容器的框架创建,并注入到框架内部的对象。
主要用来关联第三方类库,比如spring,一般应用程序不需要配置。
contant:用来设置Struts2运行的环境。
效果等同于在struts.properties中配置,或者web.xml中配置FilterDispatcher的init param--><!ELEMENT package (result-types?, interceptors?,default-interceptor-ref?, default-action-ref?, global-results?,global-exception-mappings?, action*)><!--package标签下可以出现下面标签0次或者1次result-types:用来定义结果类型interceptors:用来定义拦截器default-interceptor-ref:为package定义默认使用的拦截器,这个package 中所有的action(如果这个action没有设置自己使用的拦截器)都会调用设置的默认拦截器default-action-ref:这个package默认使用的actionglobal-results:为这个package设置共通使用的result,对这个package下的所有action都有效global-exception-mappings:为这个package定义共通的当发生异常的时候,所用到的result,需与global-results结合使用package标签下可以出现下面标签0次或者多次action:为这个package定义action信息。
result中类型
struts 中的 result 有哪些常用的类型:一、 dispatcher (1)为缺省的 result 类型,一般情况下我们在 struts.xml 会这么写: <result name="success">/main.jsp</result> 以上写法使用了两个默认,其完整的写法为: # <result name="success" type="dispatcher"> # <param name="location">/maini.jsp</param> # </result> 第一个默认:type="dispatcher";第二个默认:设置的为 location 参数,location 只能是页面,不能是另一个 action(可用 type="chain"解决) 。
(2)实现方式 从 doExecute 方法看出,有三个出口(finalLocation 为要跳转的地址) : pageContext.include(finalLocation); dispatcher.forward(request, response); (dispatcher 是根据 finalLocation 创建的) dispatcher.include(request, response); 而我们知道,forward 与 include 都是转发到 context 内部的资源。
二、redirect (1)可以重定向到一个页面,另一个 action 或一个网址。
# <result name="success" type="redirect">aaa.jsp</result> # <result name="success" type="redirect">bbb.action</result> # <result name="success" type="redirect"></result> (2)实现方式: 查看 doExecute 方法,只有一个出口: response.sendRedirect(finalLocation); sendRedirect 是重定向,是重新产生一个 HTTP 请求到服务器,故重定向后其原 来所在的 action 上下文就不可用了。
struts2.xmlresult的几种返回类型
struts2.xmlresult的几种返回类型第一篇:struts2.xml result的几种返回类型1.struts.xml中result的各种type作用 a.直接跳转到JSP页面/index.jsp/view.jsp?id=${action中的同名属性}//用这种方式可以传递action中的参数到页面b.//跳转到uri---- user.actiontype=”chain”>userc.跳转到不同的命名空间中的action :跳转到命名空间为main中的ation名为user中去:type=”redirectAction”>usermain2.struts2一个action怎么取得另一个action设定的session值HttpServletRequestrequest=ServletActionContext.getRequest();request.getSession() .setAttribute(“id”,“value”);第二个action中HttpServletRequestrequest=ServletActionContext.getRequest();Object value= request.getSession().getAttribute(“id”);3.设置sessio的会话超时时间,在web.xml里配置:1第二篇:返回母校心得回访母校感想心得时光荏苒,转眼间离开母校已经一个学期了,蓦然回首,才感概着时光的飞逝。
往日在母校的点点滴滴,依然记忆犹新;回首往日在母校的生活,仍然历历在目。
(××××年××月××日×午/×时),我怀着复杂的心情重回母校,心情里既充满着亲切与自豪,又包含着些许的忐忑。
今天伴着绵绵细雨,踏着去母校的路,虽然天空不作美,但是心情格外兴奋。
resultType
16、struts2的result类型概念:服务器端跳转(forword):跳转时,地址栏不发生改变。
客户端跳转(redirect),在跳转时,地址栏会发生改变。
Action 中表示跳转的目的地使用了在 struts.xml 配置的字符串,格式为:<result name=”” type=””></result>,type 可以有多种选择,Struts2 支持各种视图技术,例如 JSP、JSF、XML 等,默认的是 JSP。
常见的 type 类型配置如下:dispatcher(访问jsp,服务器端跳转)转发到 JSP 页面,和<jsp:forward page=””/>的效果一样,是默认类型。
<result>/Success.jsp</result> --默认name=“success”<result name=”a”>/Success.jsp</result><resu lt name=”b” type=”dispatcher”>/Success.jsp</result> redirect(访问jsp,客户端跳转)重定向到 JSP 页面,和response.sendRedirect(“”)的效果一样。
<result name=”a” type=”redirect”>/Success.jsp</result>redirectAction(action的客户端跳转)重定向到 action,目的地为 Action,配置时可以指定如下两个参数:actionName-重定向的 Action 名;namespace-重定向的 Action 所在的命名空间。
<result name=”a” type=”redirect A ction”><param name=”actionName”>myaction</param><param name=”namespace”>/test</param></result>chain(action的服务器端跳转)转发到 action,形成 action-chain,可以指定两个参数:actionName-重定向的 Action 名; namespace-重定向的 Action 所在的命名空间。
Struts2配置Result
配置Result一个result代表了一个可能的输出。
当一个Action类的方法执行完成时,它返回一个字符串类型的结果码,框架根据这个结果码选择对应的result,向用户输出。
Results配置由两部分组成:一部分是result映射,另一部分是result类型。
1.结果映射在struts.xml文件中,使用result元素来配置result映射。
result元素有两个可选的属性:在Struts2中允许定义一个默认的Result类型,这是通过result-type元素来定义的。
在框架的默认配置文件struts-default.xml中,在struts-default.xml包中有如下的一个配置:<result-types><result-type name="dispatcher"class="org.apache.struts2.dispatcher.ServletDispatcherResult"default="true"/></result-types>result-type元素的default属性指定名为dispatcher的结果类型,dispatcher结果类型使用ServletAPI中的ResultDispatcher将请求导向到目标资源(通常是JSP页面)。
如果在使用result元素配置result映射时,没有使用type类型,那么框架就将使用默认的dispatcher类型。
由于Struts2中的包是可以继承的,所以我们定义的package只要继承了struts-default包,因此也继承了默认的结果类型,所以可以省略result元素的type属性。
如果没有指定result元素的name属性,那么框架将把它命名为”success”。
2.结果类型在框架调用Action对请求进行处理之后,就要向用户呈现一个结果视图,Struts2支持多种类型的视图,这些视图是由不同的结果类型来管理的。
Struts2(转发类型)
转发类型struts2中result常见的几种转发类型:dispatcher(默认)即内部请求转发,redirect重定向,redirectAction,plainText。
下面分别介绍以下几种方式。
1.dispatcher这种方式是struts2中默认的转发类型,即内部请求转发.(视图中不写type属性就会默认为这个属性)2.redirect以下代码为其写法这种方式为重定向,即外部跳转,会改变URL地址。
如用户在浏览器中输入http://127.0.0.1:8080/Struts2_Test/test/testAction访问以上action,我们会看到URL会变为127.0.0.1:8080/Struts2_Test/showinfo.jsp3.plaintext这种方式一般来说使用的比较少,用于原样输出网页源码。
Charset用于设置字符编码及集4. redirectAction这种方式可以简单的理解成转向到另一个Action。
这种配置往往在下面的情况下需要用到:例如,当管理员添加完一个用户后,系统自动跳转到用户列表的界面。
其写法如下当前请求的action(同一包下)其中的actionName为要跳转到的action名不同包下namespace为要跳转到的action所在的包的命名空间名actionName为要跳转到的action名另外关于action之间的传值方法1)<result><param name=”actionName”>actionName?param1=info1&& param2=info2</param> </result>方法2)<result><param name=”actionName”>actionName </param><param name=”param1”>info1</param><param name=”param2”>info2</param></result>。
result讲解
Rsult是什么简单的说Result就是Action方法执行完毕之后返回的一串字符串,他指示出Action执行完之后的下一个页面在哪里,具体页面的位置是我们在struts.xml中配置的,就是<result>子元素,例如我们在前面UserAction中配置的Result:<action name="*User"class="erAction"method="{1}"><result name="input">/input.jsp</result><result name="success">success.jsp</result></action>在Struts2中内建了许多ResultType,他们都定义在strtus-default包中,我们可以在struts-default.xml中找到这些Result Type的定义虽然Strtus2内建支持这么多Result Type,但是一般情况下我们都用不到这么多,因此我们挑几个常用的学习一下,其他的可以在需要的时候再去查看文档。
Result的配置非常简单,<result>元素可以有name属性和type属性,但是两种属性都不是必须的。
1:配置name属性按照前面的讲述,name属性是用来跟Action的execute方法返回的字符串相对应的,用来指示Action运行后跳转到的下一个页面,因此name属性的值可以是任意字符串。
比如有如下的execute方法:java代码:public String execute() throws Exception {return "toWelcome";}那么,这里返回的“toWelcome”,在struts.xml里面就有如下的配置来对应:java代码:<action name="helloworldAction"class="cn.javass.action.action.HelloWorldAction"><result name="toWelcome">/s2impl/welcome.jsp</result></action>如果不设置的话,默认值为“success”,正好和Action中的“SUCCESS”这个常量相对应,那样的话,execute方法就应该返回SUCCESSDispatcher从是struts2.xml的配置中可以看出对于Dispatcher类型的Result Type被设置为默认使用的结果类型。
struts2中的result的type类型
</result>
缺点:redirect把一个http返回码(SUCCESS)以及返回的页面位置一起重新发给web服务器,容纳后由web服务器产生一个新的HTTP请求,就会产生一个新的线程,保存在原来Action执行的线程中的数据就无法访问。
所以,result需要包含Action的数据,那么redirect不是一个可行的办法。因为新的HTTP请求时在Servlet容器的新的线程中处理的,ActionContext中的所有状态都不会存在。
struts2 跳转类型 result type=chain、dispatcher、redirect(redirect-action)
dispatcher 为默认跳转类型,用于返回一个视图资源(如:jsp)
Xml代码 :
<result name="success">/main.jsp</result>
<result name="success" type="chain">step2.action</result>
</action>
<action name="step2" class="test.Step2Action">
<result name="success">finish.jsp</result>
Xml代码:
<result name="err" type="redirect-action">
Struts2的动态方法,及result跳转方式,全局结果以及默认的action的配置
Struts2的动态⽅法,及result跳转⽅式,全局结果以及默认的action的配置Action动态⽅法的调⽤ ⾸先我们需要在struts.xml中去配置⼀个常量值如下那么去哪找呢?找到Struts-core.jar并打开method属性<action name="login" class="erAction" method="lgoin"><result name="success">/success.jsp</result><result name="fail">/fail.jsp</result></action><action name="register" class="erAction" method="register"><result name="success">/success.jsp</result><result name="fail">/fail.jsp</result></action> 可以看到配置⽂件中分别定义了两个action元素,每个action的name属性都不同,但是类的引⽤却是相同的也就是说,如果⽤户的请求是login.action,那么就会调⽤类中的login()⽅法,如果是register.action则会调⽤register()⽅法.注意:Struts2在根据action元素的method属性查找执⾏⽅法时有两种途径1. 查找与method属性值完全⼀致的⽅法2. 查找与doMethod()形式的⽅法如login()⽅法,找不到此⽅法时会去找doLogin()⽅法action中感叹号的使⽤ 使⽤语法:actionName!methodName因此请求只需要这样写即可如下⽽配置⽂件中就不在需要method属性了action中通配符的使⽤<!-- {1} 相当于占位符,在每个⽤到{1} 的地⽅都匹配了前端请求的*User中*号的内容 --><action name="*User" class="erAction" method="{1}"><result name="{1}">{1}.jsp</result></action>⽐如我的请求是 loginUser.action那么login就会被填充到 {1}中,也就是跳转页⾯是login.jsp,⽅法是login,结果是login 此外有了{1}那么也是可以有{2}的.这⾥就不多讲了result跳转⽅式的配置 常⽤的三种如下:1. dispatcher:Action默认的结果类型,采⽤转发的形式请求指定的视图资源,请求中的数据信息不会丢失.2. redirect:采⽤重定向的⽅式请求指定的视图资源.数据会丢失3. redirectAction:重定向的⽅式请求⼀个新的Action,数据会丢失<action name="register" class="erAction" method="register"><result name="success" type="redirectAction">success</result><result name="fail">/fail.jsp</result></action>如上成功之后会去中找名为success的action设置默认action当出现错误请求时则会跳转到index页⾯设置全局结果 当结果为 error时则跳⼊错误页⾯注意action标签不能放在global标签前⾯。
Struts2返回类型详解
Struts2-Result返回类型详解Dispatcher语法:<result type=” dispatcher”>指定一个页面</result>或者<result>指定一个页面</result>或者<result type=”dispatcher”><param name=”location”>指定一个页面</param></result>说明:Dispatcher是result的默认类型(可以不用指定),它只能跳转到一个页面去.可以写参数,但是参数不能传递Redirect语法:<result type=”redirect”>指定一个页面</result><result type=”redirect”>指定一个Action</result><result type=”redirect”>网络地址 </result><result type=” redirect”><param name=”location”>指定一个Action?参数1=值&参数2=值&参数3=值</param></result>说明:Redirect可以跳转页面,Action,网址,在跳转的同时,可以传递多个参数.可以&来分隔多个参数Chain语法:<result type=”chain”><param name=”namespace”>namespace</param><param name=”actionName”>ActionName</param><param name=”method”>方法</param>(可选的)</result>说明:Chain可以实现Action和Action之间的跳转,但是不能传递参数(可以写参数,但是参数传递不过去)RedirectAction语法:<result type=”RedirectAction”><param name=”namespace”>namespace</param><param name=”actionName”>ActionName</param><param name=”method”>方法</param>(可选的)<param name=”参数1”>值</param><param name=”参数2”>值</param> ………………………………………</result>说明:RedirectAction可以实现Action和Action之间的跳转,可以在跳转的同时,传递任意多个参数。
struts2注解总结----@Action和@Result
struts2注解总结----@Action和@Result除了使⽤配置⽂件配置之外,还能够使⽤注解来配置以下是⼀些经常使⽤的注解介绍:@Action/@Actions:@Action指定⼀个类为action,相应配置⽂件⾥的<action>....</action>标签,当中能够配置例如以下属性1. results:配置返回的结果集属性,相当于struts2中的<result>列表,能够在{}中配置属性,详细例如以下2. value:配置action的名字,相当于<action>中的name属性3. interceptorRefs:配置拦截器@Action能够定义在类上,也能够定义在⽅法上例如以下(@Result的作⽤后⾯讲,也能够和后⾯的配合着看)@Action(value = "testAction",results = {@Result(name="success",location="/success.jsp")})public class testAction extends ActionSupport {@Overridepublic String execute() throws Exception {return SUCCESS;}}这就相当于例如以下的xml配置<action name="testAction" class="struts2.action.testAction"><result name="success">/success.jsp</result></action>在xml配置中假设name不写,那么默认就是success,在注解中也是,假设results中的name不写。
Struts2 result返回类型
Struts2 result返回类型(type)小结在struts2的返回结果配置中,我们大部分情况使用默认的或者chain或者redirect,其实struts2还有很多其他类型的,今天我们就来看一下都有哪些类型。
打开struts2的源码中struts-default.xml文件,我们能看到如下配置<package name="struts-default"abstract="true"><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>下面我们就来一一介绍一下每个是做什么的。
Struct2的result的返回类型
PlainTextResult
返回普通文本 类容
Json
注解@ParentPackage("json-default")
返回 JSON 格式的 数据
用法实例
一、dispatcher
(1)为缺省的 result 类型,一般情况下我们在 struts .xml 会这么写:
<result name="success">/main.js p</result>
类型大全
Struts2 框架提供的结果类型
已配置结果类型 类名
名
描述
dispatcher
org.apache.struts2.dispatcher. ServletDispatcherResult
注解@ParentPackage("struts-default")
默认结果类型, 用来呈现 JSP 页 面
1.chain:用来处理 Action 链,被跳转的 action 中仍能获取上个页面的值,如 request 信息。 com.opensymphony.xwork2.ActionChainResult
2.dispatcher:用来转向页面,通常处理 JSP org.apache.struts2.dispatcher.ServletDispatcherResult
10.redirectAction :重定向到一个 Action ,跳转的页面中丢失传递的信息, 如 request org.apache.struts2.dispatcher.ServletActionRedirectResult
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
struts2strus.xml中result类型及含义一个提交到服务器的处理通常可以分为两个阶段,第一个阶段查询服务器状态(查询或者更新数据库),第二个阶段选择一个合适的结果页面其返回给用户(这里要讲的Result的内容)。
Struts2提供了对不同种类返回结果的支持,常见的有JSP,FreeMarker,Velocity等。
Struts2支持的不同类型的返回结果为:名字说明Chain Result用来处理Action链Dispatcher Result用来转向页面,通常处理JSPFreeMarker Result处理FreeMarker模板HttpHeader Result用来控制特殊的Http行为Redirect Result重定向到一个URLRedirect Action Result重定向到一个ActionStream Result向浏览器发送InputSream对象,通常用来处理文件下载Velocity Result处理Velocity模板XLS Result处理XML/XLST模板PlainText Result显示原始文件内容,例如文件源代码结合Tile使用S2PLUGINS:TilesResult另外第三方的Result类型还包括JasperReports Plugin,专门用来处理JasperReport类型的报表输出。
在struts-default.xml文件中已经有了对于所有类型Result的定义:<result-types><result-type name="chain"class="com.opensymphony.xwork2.ActionChai nResult"/><result-type name="dispatcher"class="org.apache.struts2.dispatcher.Serv letDispatcherResult"default="true"/><result-type name="freemarker"class="org.apache.struts2.views.freemarke r.FreemarkerResult"/><result-type name="httpheader"class="org.apache.struts2.dispatcher.Http HeaderResult"/><result-type name="redirect"class="org.apache.struts2.dispatcher.Serv letRedirectResult"/><result-type name="redirectAction"class="org.apache.struts2.dispatcher.Serv letActionRedirectResult"/><result-type name="stream"class="org.apache.struts2.dispatcher.Stre amResult"/><result-type name="velocity"class="org.apache.struts2.dispatcher.Velo cityResult"/><result-type name="xslt"class="org.apache.struts2.views.xslt.XSLT Result"/><result-type name="plainText"class="org.apache.struts2.dispatcher.Plai nTextResult"/><!--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.Serv letActionRedirectResult"/><result-type name="plaintext"class="org.apache.struts2.dispatcher.Plai nTextResult"/></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,对应的页面的路径分别为/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>。