JFinal教程JfinalUIB 代码笔记 (2)--- jfinal中视图耗时计算
JFinal教程JfinalUIB 代码笔记 (2)--- jfinal中视图耗时计算
littleant 发表于4年前
JFinal教程JfinalUIB 代码笔记 (2)--- jfinal中视图耗时计算
  • 发表于 4年前
  • 阅读 2252
  • 收藏 4
  • 点赞 1
  • 评论 2

标题:腾讯云 新注册用户域名抢购1元起>>>   

摘要: JFinal教程jfinal中视图耗时计算,以beetl为模块引擎为例,JSP等其他类型视图同理

 重写Render和RenderFactory类,这里是Beetl的实现方式,如果是JSP,也是同样的方式继承JspRender和JspRenderFactory即可

/**
 * 继承BeetlRender,实现视图耗时的计算
 * @author 董华健
 */
public class MyBeetlRender extends BeetlRender {
 private static final long serialVersionUID = 508975754500775679L;
 private static Logger log = Logger.getLogger(MyBeetlRender.class);
 
 public static final String renderTimeKey = "renderTime";
 
 public MyBeetlRender(GroupTemplate gt, String view) {
  super(gt, view);
 }
 public void render() {
  log.debug("MyBeetlRender render start");
  long start = System.currentTimeMillis();
  super.render();
  long end = System.currentTimeMillis();
  long renderTime = end - start;
  request.setAttribute(MyBeetlRender.renderTimeKey, renderTime);
  log.debug("MyBeetlRender render end");
 }
}
/**
 * 继承BeetlRenderFactory,调用MyBeetlRender,实现视图耗时计算
 * @author 董华健
 */
public class MyBeetlRenderFactory extends BeetlRenderFactory {
 
 private static Logger log = Logger.getLogger(MyBeetlRenderFactory.class);
 public Render getRender(String view) {
  log.debug("MyBeetlRenderFactory start");
  BeetlRender render = new MyBeetlRender(groupTemplate, view);
  log.debug("MyBeetlRenderFactory end");
  return render;
 }
 public String getViewExtension() {
  return ".html";
 }
}

 在JFinalConfig中配置,在configConstant方法中加入

 me.setMainRenderFactory(new MyBeetlRenderFactory());

获取视图耗时,这个代码应该在

Interceptor的ai.invoke();之后

或者 

Handler中的nextHandler.handle(target, request, response, isHandled);之后

// 视图耗时
  long renderTime = 0;
  if(null != request.getAttribute(MyBeetlRender.renderTimeKey)){
   renderTime = (long) request.getAttribute(MyBeetlRender.renderTimeKey);
  }
标签: jfinal 视图 耗时
共有 人打赏支持
littleant
粉丝 270
博文 13
码字总数 10514
作品 1
评论 (2)
啦啦啦拉拉
private static Logger log = Logger.getLogger(MyBeetlRender.class);
logger一般都要这样子用吗?不能在父类调用?
littleant

引用来自“zonghua”的评论

private static Logger log = Logger.getLogger(MyBeetlRender.class);
logger一般都要这样子用吗?不能在父类调用?
恩,每个类log对象都是独立的,在做日志按包过滤的时候跟这个应该是有关联的
×
littleant
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: