zoukankan      html  css  js  c++  java
  • 【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" ;
         }
    }



  • 相关阅读:
    Linux Namespace : IPC
    Linux Namespace : UTS
    Linux Namespace : 简介
    《Two Dozen Short Lessons in Haskell》(二十四)代数类型
    为期近五个月的英语培训班总结
    GTD实践2周年后一些体会
    读书笔记2013第10本:《学得少却考得好Learn More Study Less》
    读书笔记2013第9本:《注意力曲线----打败分心与焦虑》
    《Two Dozen Short Lessons in Haskell》(二十二)递归
    GIF图片合集(用于网络请求图片用)
  • 原文地址:https://www.cnblogs.com/claireyuancy/p/7008656.html
Copyright © 2011-2022 走看看