一、拦截器相关知识
1、Struts2框架剖析
Holly版本生活案例:
影视公司(拍电影) ActionMapper
传媒公司(包装明星) ActionMapping
明星 Action
经纪人 ActionProxy(代理对象)
小工所在单位 ActionInvocation
小工 Interceptor(拦截器)
递归==99归一
2、struts2工作原理
3、拦截器工作原理
拦截器围绕着Action和Result的执行而执行。拦截器的工作原理类似递归的九九归一!
拦截器执行的三个阶段,有条件的执行周期:
(1)做一些Action执行前的预处理:拦截器可以准备、过滤、改变或者操作任何可以访问的数据,包括Action。
(2)调用ActionInvocation的invoke()方法将控制交给后续拦截器或返回结果字符串终止执行:如果拦截器决定请求的处理不应该继续,可以不调用invoke()方法,而是直接返回一个控制字符串。通估这种方式,可以停止后续的执行,并且决定哪个结果呈现给客户端。
(3)做一些Action执行后的处理:此时拦截器依然可以改变可以访问的对象和数据,只是此时框架已经选择了一个结果呈现给客户端了。
二、自定义拦截器
1、创建如下项目结构
2、在src下的com.action包下创建MyTimerAction.java
1 package com.action; 2 3 import com.opensymphony.xwork2.Action; 4 5 /** 6 * 记录执行时间的Action 7 * @author Holly老师 8 * 9 */ 10 public class MyTimerAction implements Action { 11 12 public String execute() throws Exception { 13 System.out.println("Action记录执行时间"); 14 return SUCCESS; 15 } 16 17 }