struts.xml文件
<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD StrutsConfiguration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="inter" extends="struts-default"namespace="/">
<!-- 拦截器的载入声明 -->
<interceptors>
<!-- 声明一个自定义的拦截器 -->
<interceptor name="myTimer"class="cn.csdn.time.inter.MyTimerInter"/>
<!-- 声明一个自定义的拦截器栈 -->
<interceptor-stack name="myStack">
<!-- 将声明的自定义拦截器放到自定义的拦截器栈中 -->
<interceptor-ref name="myTimer"/>
<!-- 将struts2中自带的拦截器栈放到自定义的拦截器栈中 -->
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors>
<!-- 声明缺省的自定义拦截器栈 -->
<default-interceptor-ref name="myStack"/>
<action name="myTimer"class="cn.csdn.time.inter.MyTimerInterAction"method="say">
<result>./MyTimerInter.jsp</result>
</action>
</package>
</struts>
自定义一个时间拦截器
public class MyTimerInter implements Interceptor{
public void destroy() {
// TODO Auto-generatedmethod stub
System.out.println("自定义时间拦截器-------销毁的时候执行.........");
}
public void init() {
// TODO Auto-generatedmethod stub
System.out.println("自定义时间拦截器-------初始化的时候执行.........");
}
public String intercept(ActionInvocation invocation) throws Exception {
// TODO Auto-generatedmethod stub
//得到当前处理的action,返回的是一个object对象
Object obj=invocation.getAction();
//定义一个表示时间的参数
long time=System.currentTimeMillis();//获取的是当前的毫秒数
System.out.println("目标方法执行之前========");
String result=invocation.invoke();//调用系统的invoke()方法
System.out.println("目标方法执行之后=========时间差为"+(System.currentTimeMillis()-time));
return result;
}
}
MyTimerInterAction.class中的say()方法
public String say(){
System.out.println("我是action方法哟!");
return SUCCESS;
}
最终跳转到的页面MyTimerInter.jsp
<h1>我是自定义的时间拦截器的jsp页面</h1>
本文展示了如何在Struts2中创建一个自定义时间拦截器`MyTimerInter`,该拦截器在目标方法执行前后记录时间,用于性能监控。在`struts.xml`配置文件中定义了拦截器、拦截器栈,并将自定义拦截器集成到默认拦截器栈中。同时提供了一个`MyTimerInterAction`行动类,包含say()方法,与拦截器配合工作。最终展示了一个简单的JSP页面显示拦截器的效果。
454

被折叠的 条评论
为什么被折叠?



