Struts2拦截器

来源:互联网 发布:windows store下载 编辑:程序博客网 时间:2024/06/05 20:49

一. 什么是拦截器?

  Struts 2大多数核心功能是通过拦截器实现的,每个拦截器完成某项功能 
拦截器方法在Action执行之前或者之后执行
拦截器栈从结构上看,拦截器栈相当于多个拦截器的组合在功能上看,拦截器栈也是拦截器 
拦截器与过滤器原理很相似
.

调用过程(重点)


拦截器类:

实现拦截器的三种方法:

1. 自定义拦截器第一种方法  接口的方法 implements Interceptor

2. 拦截器继承AbstractInterceptor 源于接口 

3.第三种拦截器:还可以进行对某一个Action的方法排除

public class MyTimerInterceptor extends AbstractInterceptor{public String intercept(ActionInvocation invocation) throws Exception {//预处理工作long startTime = System.currentTimeMillis();              //执行后续拦截器或ActionString result = invocation.invoke();              //后续处理工作       long execTime = System.currentTimeMillis() - startTime;             System.out.println("The interval time is "+execTime+" ms");//返回结果字符串              return result;}}
struts.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"    "http://struts.apache.org/dtds/struts-2.3.dtd"><struts><constant name="struts.devMode" value="false"/>  <constant name="struts.enable.DynamicMethodInvocation" value="true"/>  <constant name="struts.configuration.xml.reload" value="true"/><package name="default" namespace="/" extends="struts-default"><!-- 1.注册自定义的拦截器 --><interceptors><interceptor name="myIntercepetor1" class="com.icss.action.MyInterceptor3"></interceptor><!-- 2.注册拦截器栈 21 --><interceptor-stack name="myStack"><interceptor-ref name="myIntercepetor1"><!-- 自己的拦截器 --><param name="excludeMethods">add,update</param><!-- inexcludeMethods方法不进行拦截 --></interceptor-ref><interceptor-ref name="defaultStack"></interceptor-ref></interceptor-stack></interceptors><!-- 3.引用自定义拦截器栈 --><default-interceptor-ref name="myStack"/><action name="Demo1Action_*" class="com.icss.action.Demo1Action" method="{1}"><result>/index.jsp</result></action></package><include file="com/icss/action/upload/struts.xml"></include></struts>

3.Struts2默认的拦截器

params拦截器 
负责将请求参数设置为Action属性(属性驱动, 对象驱动)
servletConfig拦截器 
将源于Servlet API的各种对象注入到Action
 fileUpload拦截器
对文件上传提供支持
exception拦截器
捕获异常,并且将异常映射到用户自定义的错误页面
validation拦截器 
调用验证框架进行数据验证 
workflow拦截器
调用ActionSupport类的validate(),执行数据验证

4.Struts2默认的拦截器栈

struts-default.xml中定义一个defaultStack拦截器栈,并将其指定为默认拦截器
只要在定义包的过程中继承struts-default包,那么defaultStack将是默认的拦截器