博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[原创]java WEB学习笔记74:Struts2 学习之路--自定义拦截器,struts内建的拦截器
阅读量:5154 次
发布时间:2019-06-13

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

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用

内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系。

本人互联网技术爱好者,互联网技术发烧友

微博:伊直都在0221

QQ:951226918

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

1.Struts2 拦截器

  1)拦截器(Interceptor)是 Struts 2 的核心组成部分。

  2)Struts2 很多功能都是构建在拦截器基础之上的,例如文件的上传和下载、国际化、数据类型转换和数据校验等等。

  3)Struts2 拦截器在访问某个 Action 方法之前或之后实施拦截 

  4)Struts2 拦截器是可插拔的, 拦截器是 AOP(面向切面编程) 的一种实现.

  5)拦截器栈(Interceptor Stack): 将拦截器按一定的顺序联结成一条链. 在访问被拦截的方法时, Struts2 拦截器链中的拦截器就会按其之前定义的顺序被依次调用

 

2.strut2 的拦截器模型

           

 

3.Struts2 自带的拦截器

  

  

 

4.Interceptor 接口

  1)每个拦截器都是实现了 接口的 Java 类:

    

    - init: 该方法将在拦截器被创建后立即被调用, 它在拦截器的生命周期内只被调用一次. 可以在该方法中对相关资源进行必要的初始化

    - interecept: 每拦截一个请求, 该方法就会被调用一次.

    - destroy: 该方法将在拦截器被销毁之前被调用, 它在拦截器的生命周期内也只被调用一次.

 

  2)Struts 会依次调用为某个 Action 而注册的每一个拦截器的 interecept 方法.

  3)每次调用 interecept 方法时, Struts 会传递一个 ActionInvocation 接口的实例.

  4)ActionInvocation: 代表一个给定 Action 的执行状态, 拦截器可以从该类的对象里获得与该 Action 相关联的 Action 对象和 Result 对象. 在完成拦截器自己的任务之后, 拦截器将调用 ActionInvocation 对象的 invoke 方法前进到 Action 处理流程的下一个环节

  5)AbstractInterceptor :类实现了 Interceptor 接口. 并为 init, destroy 提供了一个空白的实现

 

5.自定义拦截器

  1)定义一个拦截器的类

    > 可以实现Interceptor 接口

    > 继承AbstractInterceptor 抽象类 

  2)在struts.xml 文件配置

 

MyIntercepter.java

 

 

1 package com.jason.intercepter; 2  3 import org.eclipse.jdt.internal.compiler.ast.Invocation; 4  5 import com.opensymphony.xwork2.ActionInvocation; 6 import com.opensymphony.xwork2.interceptor.AbstractInterceptor; 7  8 public class MyIntercepter extends AbstractInterceptor{ 9 10     /**11      *  @Fields:serialVersionUID12      */13     private static final long serialVersionUID = 1L;14 15     @Override16     public String intercept(ActionInvocation invocation) throws Exception {17         System.out.println(" before invovation.invoke ... ");18         String result = invocation.invoke();19         System.out.println(" after invovation.invoke ... ");20         21         return result;22     }23 24 }

 

 

 

 

Struts.xml 配置自定义拦截器 和 使用拦截器

 

/success.jsp
/token-error.jsp

 

 

 

 

  3)注意:  

     自定义的拦截器中可以选择不用 ActionInvocation 的invoke() 方法。那么后序的拦截器和Action 方法不会被调用。Struts会渲染自定义拦截器 intercept方法返回值对应的result

 

 

转载于:https://www.cnblogs.com/jasonHome/p/5928441.html

你可能感兴趣的文章
淡定,啊。数据唯一性
查看>>
深入理解 JavaScript 事件循环(一)— event loop
查看>>
Hive(7)-基本查询语句
查看>>
注意java的对象引用
查看>>
C++ 面向对象 类成员函数this指针
查看>>
NSPredicate的使用,超级强大
查看>>
自动分割mp3等音频视频文件的脚本
查看>>
判断字符串是否为空的注意事项
查看>>
布兰诗歌
查看>>
js编码
查看>>
Pycharm Error loading package list:Status: 403错误解决方法
查看>>
steps/train_sat.sh
查看>>
转:Linux设备树(Device Tree)机制
查看>>
iOS 组件化
查看>>
(转)Tomcat 8 安装和配置、优化
查看>>
(转)Linxu磁盘体系知识介绍及磁盘介绍
查看>>
tkinter布局
查看>>
命令ord
查看>>
Sharepoint 2013搜索服务配置总结(实战)
查看>>
博客盈利请先考虑这七点
查看>>