首页 > 代码库 > Struct2 拦截器

Struct2 拦截器

 

 

拦截器的整个过程

 

程序是在执行Action之前调用的拦截器,整个过程是这样子的

 

 

 

定义自己的Struct拦截器

 

这个其实就是重复造成轮子的过程,只要看看别人的轮子是怎么造出来的就可以了。

 

首先:定义一个MyInterceptor类

package com.bjsxt.interceptor;import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.interceptor.Interceptor;public class MyInterceptor implements Interceptor {    public void destroy() {        // TODO Auto-generated method stub            }    public void init() {        // TODO Auto-generated method stub            }    public String intercept(ActionInvocation invocation) throws Exception {        long start = System.currentTimeMillis();        String r = invocation.invoke();        long end = System.currentTimeMillis();        System.out.println("action time = " + (end - start));        return r;    }}

 

然后要把这个拦截器加到配置里面

在Struct里面,默认拦截器都是放在/struts-default.xml 里面,当然我们不能改人家的代码。

 

修改Struct.xml

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

首先声明这个拦截器
<interceptors> <interceptor name="my" class="com.bjsxt.interceptor.MyInterceptor"></interceptor> </interceptors> <action name="test" class="com.bjsxt.action.TestAction"> <result>/test.jsp</result> <interceptor-ref name="my"></interceptor-ref> <interceptor-ref name="defaultStack"></interceptor-ref> </action> </package>

 

       在实际开发过程中,自定义拦截器实际上是很少很少用到的。一方面,Struct已经为我们写出来很多拦截器,另一方面,一旦我们自定义了拦截器,那么我们的代码就和Struct绑定上了,以后如果再换成其他架构基本上是无法实现的。

 

Struct2 拦截器