自定义拦截器 方式 一
实现 接口 Interceptor
拦截器的生命周期(不可能是每个访问都创建一遍 拦截器)
随着程序的开始 而 创建
随着程序的结束 而 销毁
public class Myintercept01 implements Intercetor{
//下面 三个都是 生命周期方法
@Override
public void init(){
}
//拦截方法
@Override
public String intercept(ActionInvocation actionInvocation) throws Exception{
return "";
}
//销毁方法
@Override
public void destroy(){
}
}
自定义拦截器方法 二
继承 AbstractInterceptor
public class Myintercept02 extends AbstractInterceptor{
@Override
public String intercept(ActionInvocation actionInvocation) throws ExceptionP{
return "";
}
(常用的)自定义过滤器方式三
继承方法 过滤 拦截器 MethodFilterInterceptor
public class Myintercept03 extends MethodFilterInterceptor{
//拦截方法
@Override
protected String doIntercept(ActionInvocation invocation) throws Excetion{
//前处理
System.out.prinln("前处理");
//放心方法
//所有的拦截器都执行完毕后 会拿到一个字符串
//这个字符串 就是 action 类 执行完毕后 返回的字符串
String result = invocation.invoke();
//后处理
System.out.println("后处理");
return result;
}
}
配置 自定义拦截器
可以指定 拦截 或者 不拦截 那些方法
public class Demo01Actin
extends ActionSupport{
public String add();
return "success";
}
publuic String delete(){
System.out.println("delete");
return "success";
}
public String update (){
System.out.println("update");
return "success";
}
public String find(){
System.out.println("find");
return "success";
}
配置 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>
<package name="inter" namespace ="/" extends ="struts-default">
<!--注册拦截器-->
<interceptors>
<!--注册你自己定义的拦截器-->
<interceptor name="Myintercept03" class = "com.lanou.intercept.Myintercept03"></interceptor>
<!-- 2.注册拦截器栈-->
<interceptor-stack name="myStack">
<!--引入拦截器>
<interceptor-ref name ="Myintercept03">
<!--设置不想拦截的方法 不想 拦截的就写到中间 用逗号隔开>
<parm name ="inexcludeMethods">add,update</param>
</interceptor-ref>
<!-- 除了应用自己的拦截器 还要使用系统默认的拦截器 -->
<!-- 建议 : 先放自己的拦截器 在放系统的拦截器
自己写的拦截器 可能会用 到系统的拦截器中的一些功能
-->
<!-- 引入系统默认的拦截器栈 -->
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
<!-- 设置默认走的 拦截器是哪个 -->
<default-interceptor-ref name="myStack"></default-interceptor-ref>
<!-- 配置登录的Action-->
<action name="Demo01Action_*" class="com.lanoug.intercept.Demo01Action"
method="{1}">
<result name="success">/hello.jsp</result>
</action>
</package>
</struts>