Struts2中配置自定义拦截器

创建自己的拦截器
第一种方式:
public class MyInterception1 implements Interceptor{
    // 生命周期方法
    // 拦截器的 销毁方法
    @Override
    public void destroy() {
        // TODO Auto-generated method stub

    }
    // 拦截器的 初始化方法
    @Override
    public void init() {
        // TODO Auto-generated method stub

    }

    @Override
    public String intercept(ActionInvocation arg0) throws Exception {
        // TODO Auto-generated method stub
        return null;
    }

}
第二种方式:
public class MyInterception2 extends AbstractInterceptor{

    @Override
    public String intercept(ActionInvocation arg0) throws Exception {
        // TODO Auto-generated method stub
        return null;
    }

}
第三种方式(最常用的):
public class MyInterception3 extends MethodFilterInterceptor{

    // 拦截方法
    @Override
    protected String doIntercept(ActionInvocation invocation) throws Exception {
        // 前处理
        System.out.println("前处理");
        // 放行方法
        // 所有拦截器都执行完毕后
        // 会拿到一个字符串
        // 这个字符串 就是 action类 执行完毕后 返回的字符串
        String result = invocation.invoke();
        // 后处理
        System.out.println("后处理");
        return result;
    }

}
注意:拦截器只能拦截Action,不建议使用前两中方式创建拦截器,拦截器的生命周期(不可能是
每个访问都创建一遍拦截器),随着程序的开始而创建,随着程序的结束而销毁.
在struts.xml中配置自定义的拦截器
准备工作,创建一个测试用的Action和jsp文件.
Action:
public class Demo01Action extends ActionSupport{

    public String add() {
        System.out.println("add");
        return "success";
    }
    public 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";
    }
}
jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    Hello World!
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
struts.xml
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
    <package name="interception" namespace="/" extends="struts-default">
        <!-- 注册拦截器 -->
        <interceptors>
            <!-- 注册你自己定义的拦截器 -->
            <interceptor name="MyInterception3" class="com.xsd.interception.MyInterception3"></interceptor>
            <!-- 注册拦截器栈 -->
            <interceptor-stack name="myStack">
                <!-- 引入拦截器 -->
                <interceptor-ref name="MyInterception3">
                    <!-- 设置不想拦截的方法 逗号隔开多个方法 -->
                    <param name="excludeMethods">add,update</param>
                </interceptor-ref>
                <!-- 除了引用自己的拦截器 还要使用系统的默认拦截器 -->
                <!-- 建议:先放自己的拦截器 再放系统的拦截器
                    因为自己写的拦截器 可能会用 系统的拦截器封装好的功能
                 -->
                 <!-- 引入系统默认的拦截器栈 -->
                 <interceptor-ref name="defaultStack"></interceptor-ref>
            </interceptor-stack>
        </interceptors>
        <!-- 3.设置默认走的 拦截器是哪个 -->
        <default-interceptor-ref name="myStack"></default-interceptor-ref>
        <action name="Demo01Action_*" class="com.xsd.interception.Demo01Action" method="{1}">
            <result name="success">/hello.jsp</result>
        </action>
    </package>
</struts>
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Koseun/article/details/79965818
个人分类: Java
上一篇初识SSH框架中的Struts2
下一篇SSH框架之Spring
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭