在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. STM32 Cubemx 配置定时器定时1mS

    最近才发现原来我把定时器里的配置参数代表的意义给搞混了,这里记录一下,防止以后自己忘记. 以建立一个定时1mS定时器为例: 1.先打开定时器 2.配置好时钟 3.配置定时器设置 重点来了,以前在这里我 ...

  2. CSS隐藏overflow默认滚动条同时保留滚动效果

    主要应用于移动端场景,仿移动端滚动效果.对于隐藏滚动条,众所周知overflow:hidden,但是想要的滚动效果也没了. 所以对于移动端webkit内核提供一个伪类选择器: .element::-w ...

  3. java缓冲区BufferedReader

    1.java缓冲区BufferedReader拷贝文件 2.代码如下: package Demo1; import java.io.*; public class BufferedTest { pub ...

  4. CSVHelper读出乱码 解决方案

    using (FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read)) using (StreamRe ...

  5. C#-逆变 协变 反射 代码

    首先看一段测试代码,自己写的 class Program { static void Main(string[] args) { man OneMan = new man(); var d = One ...

  6. OPENWRT中SSH免密钥登陆(具体步骤)

    通过使用ssh-keygen生成公钥,在两台机器之间互相建立新人通道极客. 如果本地机器是client,远程机器为server. 1.使用ssh-keygen生成rsa keygen(在这里会覆盖曾经 ...

  7. JavaWeb错误处理集锦

    一:起因 (1)自己接下来想走算法的路子,打算把十大算法和数学模型学习一下,算是给自己之前 JavaWeb 的一个总结: (2)记得Java算是第一个比較上手的语言了,更是用JavaWeb走过了非常长 ...

  8. jsp的凝视可能会影响页面载入速度

    在jsp页面使用"<!-- -->"的凝视,凝视里面的java代码还是会得到运行,能够再查看页面源码上看到运行完毕的内容,这样就会让不希望运行的代码得到运行.影响载入速 ...

  9. 使用XMLHttpRequest解析json

    不适用内函数或者promise的方式,可以在外部提取到json数据 <!DOCTYPE html> <html lang="en"> <head> ...

  10. 详解JSP九个内置对象

    [JSP]☆★之详解九个内置对象       在web开发中,为方便开发者,JSP定义了一些由JSP容器实现和管理的内置对象,这些对象可以直接被开发者使用,而不需要再对其进行实例化!本文详解,JSP2 ...