struts2自定义拦截器

 

今天学了struts2的拦截器,对拦截器的实现原理有了一定的了解。

下面是根据老师带领,完成的一个自定义拦截器 。

第一步:

写一个自己的拦截器类。MyTimerInterceptor.java ,实现Interceptor接口,并实现这个接口中的方法。有三种方法,如下:

(1)       init()方法用来初始化拦截器

(2)       destroy()方法为拦截器提供清理,也就是销毁的时候执行

(3)       intercept()方法为拦截器处理业务规则,这个方法每次请求都执行一次

代码如下:

import javax.interceptor.InvocationContext;

import com.opensymphony.xwork2.ActionInvocation;

import com.opensymphony.xwork2.interceptor.Interceptor;

 

public class MyTimerInterceptor implements Interceptor{

         //销毁的方法

         public void destroy() {

                   System.out.println("销毁的时候执行一次");

         }

         public void init() {

                   System.out.println("初始化的时候执行一次");

         }

         public String intercept(ActionInvocation invocation) throws Exception {

                   //当前处理的action::::::cn.csdn.hr.struts.inter.action.MyInterceptorAction@195edfe

                   Object obj = invocation.getAction();

        

                   System.out.println(obj.toString());

                  

                   long mil = System.currentTimeMillis();

                   System.out.println("目标方法执行之前:........"+System.currentTimeMillis());

                  

                   String result = invocation.invoke();//执目标方法

                  

                   System.out.println(result+"目标方法执行之后.......共花费时间为:"+(System.currentTimeMillis()-mil));

                   System.out.println("每次请求的时候都执行一次");

                   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>

    <package name="empl" extends="struts-default" namespace="/csdn">

 

       <!-- 拦截器的声明 -->

       <interceptors>

           <!-- 声明自定义拦截器 -->

           <interceptor name="myTimer"

              class="cn.csdn.hr.struts.inter.MyTimerInterceptor" />

           <!-- 声明拦截器栈 -->

           <interceptor-stack name="myStack">

              <interceptor-ref name="myTimer" />

              <interceptor-ref name="defaultStack" />

           </interceptor-stack>

       </interceptors>

       <!-- 配置缺省的 拦截器栈 -->

       <default-interceptor-ref name="myStack" />

       <action name="helloInter"

           class="cn.csdn.hr.struts.inter.action.MyInterceptorAction" method="execute">

           <interceptor-ref name="myTimer"/>

           <result>../sc.jsp</result>

       </action>

       <action name="hiInter"

           class="cn.csdn.hr.struts.inter.action.MyInterceptorAction" method="say">

           <result>../sc.jsp</result>

       </action>

    </package>

</struts>

 

以上这个程序执行的结果如下所示:

 

cn.csdn.hr.struts.inter.action.MyInterceptorAction@f631d8

目标方法执行之前:........1331118970703

success目标方法执行之后.......共花费时间为:187

每次请求的时候都执行一次

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值