在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" ;
     }
}


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

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

    dispatcher 为默认跳转类型,用于返回一个视图资源(如:jsp) Xml代码 : <result name="success">/main.jsp</re ...

  2. Struts2 语法--result type

    result type: dispatcher,redirect:只能跳转到jsp,html之类的页面,dispatcher属于服务器跳转, redirect属于客户端跳转 chain: 等同于for ...

  3. 基于struts2注解@action的@Result跳转问题——跳转到另一个action

    初学ssh 基于注解的方式简单灵活,但是做一个例子的时候,添加用户AddUser 完成后 想页面跳转到 ListUser 这个action, 然后action 成功后 会跳转到list.jsp 显示 ...

  4. struts2.xml 中result type属性说明

    chain           用来处理Action链,被跳转的action中仍能获取上个页面的值,如request信息.           com.opensymphony.xwork2.Acti ...

  5. struts2 Result Type四个常用转跳类型

    Result的四个常用转跳类型分别为 Dispatcher 用来转向页面,是Struts的默认形式 Redirect   重定向到一个URL Chain  用来处理Action链 RedirectAc ...

  6. Struts2 中result type属性说明

    Struts2 中result type属性说明 首先看一下在struts-default.xml中对于result-type的定义: <result-types><result-t ...

  7. struts2 action result type类型

    struts2 action result type类型 1.chain:用来处理Action链,被跳转的action中仍能获取上个页面的值,如request信息. com.opensymphony. ...

  8. struts2 result type类型

    result标签中type的类型 类型 说明 chain 用于Action链式处理 dispatcher 用于整合JSP,是<result>元素默认的类型 freemarket 用来整合F ...

  9. struts2 中 result type="stream"

    Stream result type是Struts2中比较有用的一个feature.特别是在动态生成图片和文档下载的情况下 1:图片验证码: Action类,action主要要提供一个获取InputS ...

随机推荐

  1. Git:Git的安装过程

    Git:Git的安装过程 路径不要存在空格 默认即可,第一项为是否在页面显示 文本编辑器,默认VIM即可 设置环境变量: 1)最安全的选择,path环境变量不会改变,你只能在git bash里使用命令 ...

  2. angular-HTTP

    AngularJS $http 是一个用于读取web服务器上数据的服务. $http.get(url) 是用于读取服务器数据的函数. <div ng-app="myApp" ...

  3. 关于android的设备管理器-DevicePolicyManager(一)

    在Andorid的设置->安全里面有个设备管理器的选项,相信大部分android用户都不太会去注意这个东西.近期在安装了一个应用之后发现这个里面的东西变了.怎么回事呢,研究研究看看.</s ...

  4. 聚类算法学习-kmeans,kmedoids,GMM

    GMM参考这篇文章:Link 简单地说,k-means 的结果是每个数据点被 assign 到其中某一个 cluster 了,而 GMM 则给出这些数据点被 assign 到每个 cluster 的概 ...

  5. JQuery与CSS之图片上放置button

    position:relative日常应用的时候通常是设置给position:absolute;的父层的, 父层position:relative; 子层position:absolute;的话, 就 ...

  6. 对苹果“五仁”编程语言Swift的简单分析

    对苹果"五仁"编程语言Swift的简单分析 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvUHJvdGVhcw==/font/5a6L5 ...

  7. cmd文件操作-添加

    新建文件夹 mkdir 文件名 mkdir wenjianjia 新建文件 type NUL > 文件名.文件类型

  8. jar 包的认识与处理、jar 文件 war 文件以及 ear 文件

    1. jar 包 将 jar 包解压,其实是该类(.java)编译好的(.class)文件. 包路径 package 多层嵌套的 packages META-INF 文件夹 2. 常用 jar 包及其 ...

  9. Kettle学习系列之数据仓库、数据整合、ETL、ELT和EII之间的区别?

    不多说,直接上干货! 在数据仓库领域里,的一个重要概念就是数据整合(data intergration).数据整合它就是把不同数据库中的数据整合到一起,对外提供统一的数据视图. 数据整合最典型的案例就 ...

  10. 最长公共子序列(稀疏序列)nlogn解法

    首先这种做法只能针对稀疏序列, 比如这种情况: abc abacabc. 会输出5 ,,,,就比较尴尬, #include<iostream> #include<cstdio> ...