博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
37.使用PreResultListener实现回调
阅读量:6438 次
发布时间:2019-06-23

本文共 2002 字,大约阅读时间需要 6 分钟。

转自: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对象会在返回结果前执行,请注意结合拦截器执行的顺序来看。此实例目前作为了解。

转载地址:http://xgzwo.baihongyu.com/

你可能感兴趣的文章
Extjs4:改变Grid单元格背景色(转载)
查看>>
中医无绝症[转载]
查看>>
ZendStudio10.6.1如何安装最新的集成svn小工具?
查看>>
PHP中$_SERVER的详细参数与说明
查看>>
jquery easyui datagrid mvc server端分页排序筛选的实现
查看>>
去了大公司就一定能学到很牛的技术么?
查看>>
methanol 模块化的可定制的网页爬虫软件,主要的优点是速度快。
查看>>
IOS开发之表视图(UITableView)
查看>>
Notepad++去除代码行号的几种方法
查看>>
polay定理总结
查看>>
IIS如何配置可以下载APK、IPA文件
查看>>
CodeForces 396C 树状数组 + DFS
查看>>
[sharepoint]rest api文档库文件上传,下载,拷贝,剪切,删除文件,创建文件夹,修改文件夹属性,删除文件夹,获取文档列表...
查看>>
远程桌面退出全屏/不能全屏/全屏切换的技巧
查看>>
【Java】Float计算不准确
查看>>
mybatis在xml文件中处理大于号小于号的方法
查看>>
Codeforces Codeforces Round #319 (Div. 2) A. Multiplication Table 水题
查看>>
各大浏览器CSS Hack收集
查看>>
再谈 $* 和 $@ 在 Bash 中的表现
查看>>
Apache Commons工具集简介
查看>>