Struts2拦截器

一. 什么是拦截器?

  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();
              //执行后续拦截器或Action
		String 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将是默认的拦截器


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值