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对象会在返回结果前执行,请注意结合拦截器执行的顺序来看。此实例目前作为了解。
37.使用PreResultListener实现回调的更多相关文章
- js回调函数的理解
js回调函数(callback)理解 Mark! 讲之前说一句 function say(){ alert(,,,,,,,,) } var say=function (){ alert(,,,,,,, ...
- Structs框架
一.准备工作及实例 1.解压struts-2.1.6-all.zip(structs网上下载) apps目录:struts2自带的例子程序 docs目录:官方文档. lib 目录:存放所有jar文件. ...
- C# HttpWebRequest 绝技 转至 http://www.sufeinet.com/
转至: 在线测试工具http://www.sufeinet.com/thread-3690-1-1.htmlc# HttpWebRequest与HttpWebResponse 绝技 如果你想做一 ...
- struts2.1.6教程五、拦截器
在前面我们已经初步使用过拦截器,下面继续细细探讨. 1.概述strust2中的拦截器 拦截器是Struts2框架的核心,它主要完成解析请求参数.将请求参数赋值给Action属性.执行数据校验.文件上传 ...
- Struts2 实例(转载)
一.准备工作及实例 1.解压struts-2.1.6-all.zip apps目录:struts2自带的例子程序docs目录:官方文档. lib 目录:存放所有jar文件. Src 目录:源文件存放地 ...
- mahout安装和测试
Mahout 是 Apache Software Foundation(ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发者更加方便快捷地创建智能应用程序.Apac ...
- Target-Action回调模式
前面的博客中提到过回调的概念,是在OC通过协议来实现的回调,和Java中的接口的回调极为相似,下面来介绍另一种方法回调模式: Target-Action回调.首先我们来从字面意思来理解一下Target ...
- 浅谈js回调函数
回调函数原理: 我现在出发,到了通知你”这是一个异步的流程,“我出发”这个过程中(函数执行),“你”可以去做任何事,“到了”(函数执行完毕)“通知你”(回调)进行之后的流程 例子 1.基本方法 ? 1 ...
- TJI读书笔记14-闭包与回调
TJI读书笔记14-闭包与回调 闭包与回调 为什么要使用内部类?内部类继承自某个类或者实现某个接口,内部类的代码可以操作外嵌类的对象. 这不是使用内部类的理由. 那么为什么使用内部类呢? 我觉得如 ...
随机推荐
- StringUtils 正则校验
public class StringUtils { /** * 如果str为null,返回“”,否则返回str * @param str * @return */ public static Str ...
- POJ 3414 Pots 暴力,bfs 难度:1
http://poj.org/problem?id=3414 记录瓶子状态,广度优先搜索即可 #include <cstdio> #include <cstring> #inc ...
- web——自己实现一个淘宝购物车页面
body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...
- MMAP文件内存映射
body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...
- centos7 搭建svn服务器&客户端的访问&备份迁移
当今用于版本控制的软件程序主要的有svn和git,其它软件咱不熟悉,今天记录下搭建svn服务器和svn客户端使用: 使用环境:虚拟机为centos7系统,svn服务器安装在centos7系统平台上,s ...
- java回收finalize方法的作用(编程思想)
清理:终结处理和垃圾回收 java有垃圾回收期负责回收无用对象占据的内存资源.但也有这种情况:假定你的对象(并非使用new)获得了一块“特殊”的内存区域,由于垃圾回收期只知道释放那些由new分配的内存 ...
- Element-ui实现loading的局部刷新
后台管理系统loading的局部刷新 在一次vue+element-ui后台管理系统的项目中,遇到这样一个问题,引入element-ui加载框后,loading会占满整个屏幕,虽然通过改变路由实现了局 ...
- 一台 linux 主机装两个mysql
启动 3306 nohup /usr/local/mysql5.1.7/bin/mysqld_safe & 启动 3307/usr/local/mysql/bin/mysqld --defau ...
- 《DSP using MATLAB》Problem 2.15
代码: %% ------------------------------------------------------------------------ %% Output Info about ...
- vue使用百度编辑器ueditor踩坑记录
一.使用 下载放入项目 main.js引入 import '../static/UE/ueditor.config.js'; import '../static/UE/ueditor.all.js'; ...