拦截器计算action执行时间

拦截器笔记整理:

首先可以用拦截器来计算action执行的时间。

在book.jsp中

"timer">访问timeraction计算花费时间

创建TimerAction类

importcom.opensymphony.xwork2.ActionSupport;

publicclassTimerActionextendsActionSupport{

publicString execute(){

//执行时候需要时间,计算执行的时间

for(inti=0;i<1000;i++){

System.out.println("i love u");

}

returnSUCCESS;

}

}

//配置拦截器,注册

struts.xml


"timer"extends="struts-default"namespace="/">


"timeinterceptor"class="com.neusoft.interceptor.TimerInterceptor">

"timer"class="com.neusoft.action.TimerAction">

"timeinterceptor">

/show.jsp

创建拦截器

importjavax.servlet.http.HttpServletRequest;

importorg.apache.struts2.StrutsStatics;

importcom.opensymphony.xwork2.ActionContext;

importcom.opensymphony.xwork2.ActionInvocation;

importcom.opensymphony.xwork2.interceptor.Interceptor;

publicclassTimerInterceptorimplementsInterceptor{

publicvoiddestroy() {}

publicvoidinit() {}

//需要实现,计算实行action花费的时间,改下参数名

publicString intercept(ActionInvocation invocation)throwsException {

//1、执行action之前我的时间。获得当前的值保存在start中

longstartTime = System.currentTimeMillis();//开始时间

//2.执行下一个拦截器,如果已经是最后一个拦截器,则是执行目标action

String result = invocation.invoke();//invoke表示执行下一个拦截器,返回一个字符串,就是action中方法

//3.执行完以后,再次统计时间,两个时间相减得出时间,把结果返回

longexecutionTime = System.currentTimeMillis() - startTime;

System.out.println("Action的执行花费的毫秒数是:"+ executionTime);

//jsp获取值

ActionContext ac = invocation.getInvocationContext();

HttpServletRequest request =(HttpServletRequest)ac.get(StrutsStatics.HTTP_REQUEST);

// request.setAttribute("result", result); //不可以取值

request.getSession().setAttribute("executionTime", executionTime);

returnresult;

}

}


拦截器计算action执行时间_第1张图片

运行结果:



拦截器计算action执行时间_第2张图片

你可能感兴趣的:(拦截器计算action执行时间)