转自: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实现回调相关推荐

  1. 【Linux 线程】常用线程函数复习《一》

    1.pthread_create以及pthread_self函数 1 /**************************************************************** ...

  2. java原生封装_[Java教程]原生AJAX封装

    [Java教程]原生AJAX封装 0 2016-07-12 13:00:08 回归下原生js,网上看到的AJAX封装,遂拿来改改,不知还有何弊端,望指出!1 var ajaxHelper = { 2 ...

  3. 原生javascript之实战 轮播图

    成品效果如下图所示: 因为博客园限制图片上传大小被我删了一些帧数,所以图片看起来会有一点卡,现实运行是不会的 搭建HTML和CSS结构 HTML代码如下: 1 <div class=" ...

  4. ROS入门WIKI学习记录

    20180511 编写订阅器节点 代码解释 34 void chatterCallback(const std_msgs::String::ConstPtr& msg) 35 { 36 ROS ...

  5. Struts2入门教程

    2019独角兽企业重金招聘Python工程师标准>>> http://www.chengxuyuans.com 程序员之家 一.准备工作及实例 1.解压struts-2.1.6-al ...

  6. struts2源码阅读

    Struts2的工作机制分析及实例 一.概述 本章讲述Struts2的工作原理. 读者如果曾经学习过Struts1.x或者有过Struts1.x的开发经验,那么千万不要想当然地以为这一章可以跳过.实际 ...

  7. STM32F4 RTC-Alarm 的使用(RT-Thread操作系统)

    文章目录 1 工程的创建和配置 1.1 CubeMX 的配置 1.1.1 时钟源的选择 1.1.2 Debug 引脚配置 1.1.3 控制台串口的配置 1.1.4 RTC的配置 1.1.5 时钟树配置 ...

  8. echarts.common.min.js

    !function(t,e){"object"==typeof exports&&"object"==typeof module?module. ...

  9. c++回调函数 callback

    (1)Callback方式 Callback的本质是设置一个函数指针进去,然后在需要需要触发某个事件时调用该方法, 比如Windows的窗口消息处理函数就是这种类型.比如下面的示例代码,我们在Down ...

最新文章

  1. optaplanner_OptaPlanner –具有真实道路距离的车辆路线
  2. 首届React开发者大会于2018年8月18日在广州举办
  3. 某科学的分支语句 --- switch
  4. update mysql.user set password_使用update命令来修改Mysql的root密码
  5. python 数据分析 电信_实例 | 教你用Python写一个电信客户流失预测模型
  6. aliddns ipv6_python脚本实现ipv6的ddns功能
  7. 微信小程序入门4-扫普通二维码进入小程序、打开短链接进入小程序
  8. 小程序 web-view 打开 微信公众号文章
  9. JS实现下落的树叶特效
  10. 类型体操的9种类型运算、4种类型套路总结
  11. python 离群值_如何从Numpy数组中删除离群值
  12. SQL注入之字符型注入练习(pikachu)
  13. 开源的微信商城,含小程序端,后台管理系统,服务器后端,附完整源码
  14. 卓普zp900s手机root和data大小调整经验
  15. gulp之ES6转ES5
  16. 赠与今年的大学毕业生-----------胡适
  17. 非211普通一本学生如何找IT名企实习?
  18. 埃森哲带给我们什么启示?
  19. word跟html的区别,letter和word有什么区别
  20. 图像拼接——多波段融合(multi blend)

热门文章

  1. 小话设计模式三:发布/订阅模式
  2. 不用虚拟机直接在线用的 Linux,统统都在这里!
  3. php 写 mysql 事件_PHP日歷,包含來自MySQL數據庫的重復事件
  4. SpringCloud熔断器介绍
  5. logback 的拆分 Appender
  6. 基于jwt的用户鉴权:拦截器概述
  7. 数据类型介绍和表的创建
  8. 获取商品列表(Feign)
  9. Spring Session官方介绍及spring框架学习方法
  10. 数据库设计对性能的影响