您的位置:首页 > 编程语言 > Java开发

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

2015-07-16 09:52 459 查看
在jsp/servlet中,结果集通常是指请求转发和重定向这两种!
Struts2作为框架,提供了基于这两种的更多的结果集!

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

[align=left]         <result-types>[/align]
[align=left]            <result-type name= "chain" class="com.opensymphony.xwork2.ActionChainResult" />[/align]
[align=left]            <result-type name= "dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/>[/align]
[align=left]            <result-type name= "freemarker" class="org.apache.struts2.views.freemarker.FreemarkerResult" />[/align]
[align=left]            <result-type name= "httpheader" class="org.apache.struts2.dispatcher.HttpHeaderResult" />[/align]
[align=left]            <result-type name= "redirect" class="org.apache.struts2.dispatcher.ServletRedirectResult" />[/align]
[align=left]            <result-type name= "redirectAction" class="org.apache.struts2.dispatcher.ServletActionRedirectResult" />[/align]
[align=left]            <result-type name= "stream" class="org.apache.struts2.dispatcher.StreamResult" />[/align]
            <result-type name= "velocity" class="org.apache.struts2.dispatcher.VelocityResult" />
[align=left]            <result-type name= "xslt" class="org.apache.struts2.views.xslt.XSLTResult" />[/align]
[align=left]            <result-type name= "plainText" class="org.apache.struts2.dispatcher.PlainTextResult" />[/align]
[align=left]        </result-types>[/align]
如何配置结果集呢?
在struts的配置中,使用result标签来表示结果集:

< result type = "redirect" name = "redirect"> / resulttype/resulttype.jsp </result >
[align=left]
[/align]
[align=left]type:表示结果集的类型[/align]
[align=left]name:与Action中方法的返回值相互对应![/align]
[align=left]
[/align]
[align=left]常见的type有三种:dispatcher,redirect,redirectAction[/align]
[align=left]
[/align]
[align=left]下面详细介绍一下这三种结果集:[/align]
[align=left]1.创建一个struts-resulttype.xml文件:[/align]
[align=left]在struts.xml文件中,使用inclue将上述文件引入:[/align]

< include file = "struts-resulttype.xml" ></include >
[align=left]struts-resulttype.xml:[/align]

[align=left]<?xml version= "1.0" encoding ="UTF-8" ?>[/align]
[align=left]<!DOCTYPE struts PUBLIC[/align]
    "-//Apache
Software Foundation//DTD Struts Configuration 2.0//EN"
[align=left]    "http://struts.apache.org/dtds/struts-2.0.dtd">[/align]
[align=left]<struts>[/align]
[align=left]     <package name="resulttype" namespace="/" extends="struts-default" >[/align]
[align=left]          [/align]
[align=left]           <!--[/align]
[align=left]              全局结果集:当某个方法返回为name属性对应的值时,就调用全局结果集进行处理。[/align]
[align=left]              可以用来进行通用错误页面的处理。[/align]
[align=left]           -->[/align]
[align=left]           <global-results>[/align]
[align=left]               <result name="error" >errot/error.jsp</ result>[/align]
[align=left]           </global-results>[/align]
[align=left]          [/align]
           <!-- 测试请求转发 
-->
[align=left]           <action name= "dispatcherAction" method="testDispatcher" class="cn.itheima03.struts2.resulttype.ResultTypeAction" >[/align]
[align=left]               <!--[/align]
[align=left]              <result type="" name=""></result> :[/align]
[align=left]                   result标签代表一种结果集,在struts-default.xml中定义了一写结果集[/align]
[align=left]                   type[/align]
[align=left]                        dispatcher  转发  默认值[/align]
[align=left]                        redirect    重定向[/align]
[align=left]                        redirectAction  重定向到一个action[/align]
[align=left]                  name[/align]
[align=left]                      success 默认值[/align]
[align=left]                  method="testDispatcher"[/align]
[align=left]               -->[/align]
[align=left]               <result type= "redirect" name="redirect" >/ resulttype/resulttype.jsp</result >[/align]
[align=left]           </action>[/align]
[align=left]          [/align]
[align=left]          [/align]
[align=left]           <!-- 测试重定向[/align]
[align=left]               浏览器中的 url会发生变化:[/align]
[align=left]               http://localhost/itheima03_struts2/resulttype/resulttype.jsp[/align]
[align=left]           -->[/align]
[align=left]           <action name= "redirectAction" method="testRedirect" class="cn.itheima03.struts2.resulttype.ResultTypeAction" >[/align]
[align=left]               <result type= "redirect" name="redirect" >/ resulttype/resulttype.jsp</result >[/align]
[align=left]           </action>[/align]
[align=left]          [/align]
[align=left]           <!--[/align]
[align=left]              测试重定向到一个action[/align]
[align=left]              浏览器的地址栏会变成:[/align]
[align=left]               http://localhost/itheima03_struts2/dispatcherAction!testDispatcher.action[/align]
[align=left]           -->[/align]
[align=left]           <action name= "redirectActionAction" method="testRedirectAction" class="cn.itheima03.struts2.resulttype.ResultTypeAction" >[/align]
[align=left]               <result type= "redirectAction" name="redirectAction" >dispatcherAction!testDispatcher.action </result>[/align]
[align=left]           </action>[/align]
[align=left]          [/align]
[align=left]           <!-- 测试全局结果集的处理[/align]
[align=left]              当自己定义的name属性的值和全局结果集name属性值一直时,自己定义的优先![/align]
[align=left]              1.当自己的name='error'时,使用自己定义的结果集;[/align]
[align=left]              2.当自己的name!='error'时,如果访问的方法返回的是"error",那么调用全局结果集进行处理![/align]
[align=left]              [/align]
[align=left]          -->[/align]
[align=left]           <action name= "globalResultAction_*" method ="{1}" class="cn.itheima03.struts2.resulttype.ResultTypeAction" >[/align]
[align=left]               <result name="error" >resulttype/resulttype.jsp</ result>[/align]
[align=left]           </action>[/align]
[align=left]          [/align]
[align=left]     </package >[/align]
[align=left]</struts>[/align]
[align=left]2.Action的处理:[/align]

[align=left]import org.apache.struts2.ServletActionContext;[/align]
[align=left]
[/align]
[align=left]import com.opensymphony.xwork2.ActionSupport;[/align]
[align=left]
[/align]
[align=left]public class ResultTypeAction extends ActionSupport{[/align]
[align=left]     [/align]
[align=left]     /**[/align]
[align=left]      * 测试请求转发结果集:type为dispatcher[/align]
[align=left]      * <result type="dispatcher" name="dispatcher">/resulttype/resulttype.jsp </result>[/align]
[align=left]      */[/align]
     public String
testDispatcher(){
[align=left]          ServletActionContext. getRequest().setAttribute("aa", "aadda");[/align]
[align=left]//        return "error";//测试全局结果集[/align]
[align=left]           return "dispatcher" ;[/align]
[align=left]     }[/align]
[align=left]     [/align]
[align=left]     /**[/align]
[align=left]      * 测试重定向[/align]
[align=left]      */[/align]
     public String
testRedirect(){
[align=left]          ServletActionContext. getRequest().setAttribute("aa", "aaa");[/align]
[align=left]           return "redirect" ;[/align]
[align=left]     }[/align]
[align=left]     [/align]
[align=left]     /**[/align]
[align=left]      * 测试重定向到一个action[/align]
[align=left]      * <result type="redirectAction" name="redirectAction">dispatcherAction!testDispatcher.action</result>[/align]
[align=left]      */[/align]
     public String
testRedirectAction(){
[align=left]          ServletActionContext. getRequest().setAttribute("aa", "aaa");[/align]
[align=left]           return "redirectAction" ;[/align]
[align=left]     }[/align]
[align=left]     [/align]
[align=left]     /**[/align]
[align=left]      * 测试全局结果集[/align]
[align=left]      * 返回值要和全局结果集的name属性值要对应![/align]
[align=left]      *        <global-results>[/align]
[align=left]                   <result name="error">errot/error.jsp </result>[/align]
[align=left]             </global-results>[/align]
[align=left]      *[/align]
[align=left]      * @return[/align]
[align=left]      */[/align]
     public String
globle(){
[align=left]           return "error" ;[/align]
[align=left]     }[/align]
[align=left]}[/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  struts2 框架 struts