欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Struts2之拦截器

程序员文章站 2022-05-28 15:58:17
...

1.第一种方式

拦截器类书写

public class UserInterceptor extends AbstractInterceptor  {

    @Override
    public String intercept(ActionInvocation invocation) throws Exception {
        
        System.out.println("我在action之前执行!");
        
        System.out.println("拦截时间:"+new Date());
        
        //执行的是Action中的方法
        String result = invocation.invoke();
        
        System.out.println("我在action之后执行!");
        
        return result;
        
    }

}

struts.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
    "http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<constant name="struts.devMode" value="true"></constant>
<package name="jiangwenwen" namespace="/" extends="struts-default">
    <interceptors>
        <interceptor name="userInterceptor" class="cn.jiangwenwen.interceptor.UserInterceptor"></interceptor>
    </interceptors>
        
    <action name="login" class="cn.jiangwenwen.action.UserAction" method="login">
        <result>/test.jsp</result>
        <interceptor-ref name="userInterceptor"></interceptor-ref>
        <!-- 当使用自定义拦截器,默认拦截器将会失效,所以需要添加默认拦截器 -->
        <interceptor-ref name="defaultStack"></interceptor-ref> 
    </action>
</package>
</struts>

2.第二种方式

拦截器类书写

public class UserInterceptor extends MethodFilterInterceptor{

    @Override
    protected String doIntercept(ActionInvocation invocation) throws Exception {
        
         System.out.println("我在action之前执行!");
            
            System.out.println("拦截时间:"+new Date());
            
            //执行的是Action中的方法
            String result = invocation.invoke();
            
            System.out.println("我在action之后执行!");
            
            return result;
        
    }

}

struts.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
    "http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<constant name="struts.devMode" value="true"></constant>
<package name="jiangwenwen" namespace="/" extends="struts-default">
    <interceptors>
        <interceptor name="userInterceptor" class="cn.jiangwenwen.interceptor.UserInterceptor"></interceptor>
    </interceptors>
                
    <action name="login" class="cn.jiangwenwen.action.UserAction" method="login">
        <result>/test.jsp</result>
        <interceptor-ref name="userInterceptor">
            <!-- 代表是否拦截某一个方法 -->
            <param name="excludeMethods">login</param>
        </interceptor-ref>
        <!-- 当使用自定义拦截器,默认拦截器将会失效,所以需要添加默认拦截器 -->
        <interceptor-ref name="defaultStack"></interceptor-ref> 
    </action>
</package>
</struts>