zoukankan      html  css  js  c++  java
  • 37.使用PreResultListener实现回调

    转自:https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html

    在进行本实例前请前复习:五.2自定义拦截器。因为PreResultListener对象一般是绑定在拦截器上使用。

    下面我们新建struts2PreResultListener项目进行测试。

    步骤一,建立类,实现PreResultListener接口,主要代码如下:

    package com.asm;

    import com.opensymphony.xwork2.ActionInvocation;

    import com.opensymphony.xwork2.interceptor.PreResultListener;

    public class MyPreResultListener implements PreResultListener {

           public void beforeResult(ActionInvocation invocation, String res) {

                  // System.out.println(invocation.getAction());

                  // System.out.println(invocation.getResultCode());

                  /**回调Action中的方法:

                   * LoginAction lg = (LoginAction) invocation.getAction(); try {

                   * lg.execute(); } catch (Exception e) { e.printStackTrace(); }

                   */

                  System.out.println("检验到PreResultListener被执行");

           }

    }                                                       8888888

    步骤二,copy前面在自定义拦截器中用到的三个拦截器,并绑定MyPreResultListener对象,首先是在MyInterceptor类中,我们只需要修改intercept方法即可,代码如下:

    public String intercept(ActionInvocation invocation) throws Exception {

                  invocation.addPreResultListener(new MyPreResultListener());

                  System.out.println("开始拦截");

                  String result = invocation.invoke();

                  System.out.println("结束拦截");

                  return result;

    }

    随后在MyMethodFilterInterceptor类中作类似修改。为了区别,我们在MyAbstractInterceptor类中不绑定MyPreResultListener对象。

    步骤三,编写struts.xml文件,主要配置内容如下:
    <struts>

           <package name="interceptor" extends="struts-default">

                  <interceptors>

                         <interceptor name="myIpt" class="com.asm.MyInterceptor">

                         </interceptor>

                         <interceptor name="myAbs"

                                class="com.asm.MyAbstractInterceptor">

                         </interceptor>

                         <interceptor name="myMet"

                                class="com.asm.MyMethodFilterInterceptor">

                         </interceptor>

                  </interceptors>

     

                  <action name="login" class="com.asm.LoginAction">

                         <interceptor-ref name="myIpt"></interceptor-ref>

                         <interceptor-ref name="myAbs"></interceptor-ref>

                         <interceptor-ref name="myMet"></interceptor-ref>

                         <result name="success">/success.jsp</result>

                  </action>                         

           </package>

    </struts>

    步骤四,编写相应的jsp页面,发布测试。

    说明:此实例的只是简要地演示了PreResultListener的使用,所以相对简单。对于其它相关操作,我们可以从MyPreResultListener类注释掉的内容中找到一此端倪。强调:从执行结果来看,PreResultListener对象会在返回结果前执行,请注意结合拦截器执行的顺序来看。此实例目前作为了解。

  • 相关阅读:
    AcWing 826. 单链表
    AcWing 803. 区间合并
    codeforces Codeforces Round #597 (Div. 2) D. Shichikuji and Power Grid
    球球大作战.exe
    RGB MIXER三原色混色器的制作
    125. 验证回文串
    110. 平衡二叉树
    112. 路径总和
    111. 二叉树的最小深度
    100. 相同的树
  • 原文地址:https://www.cnblogs.com/sharpest/p/5587647.html
Copyright © 2011-2022 走看看