源码有毒:Jfinal源码解析(四)
2016-08-08 17:17
232 查看
源码有毒:Jfinal源码解析(一)
源码有毒:Jfinal源码解析(二)
源码有毒:Jfinal源码解析(三)
在buildActionMapping()方法之后,把routes信息和拦截器装载到了actionMapping当中,并且把Config中的Routes信息制空,便于垃圾回收器回收。
回到JFinal的init方法
简单看下initHandler()
看下getHandler方法
这里获取到了Constants中的HandlerList,和新创建的ActionHandler构建成了一个Handler链,并且返回链顶的Handler
initRender();中初始化了JFinal中的render视图信息
initOreillyCos();中则初始化了文件上传插件
回到JFinalFilter的init方法
init中接下来的代码就比较轻松了,为成员变量handler、constants、encoding、contextPathLength赋值,顺便调用了jfinalConfig.afterJFinalStart();方法,到这里整个框架的初始化完成
源码有毒:Jfinal源码解析(二)
源码有毒:Jfinal源码解析(三)
private void initActionMapping() { actionMapping = new ActionMapping(Config.getRoutes(), Config.getInterceptors()); actionMapping.buildActionMapping(); Config.getRoutes().clear(); }
在buildActionMapping()方法之后,把routes信息和拦截器装载到了actionMapping当中,并且把Config中的Routes信息制空,便于垃圾回收器回收。
回到JFinal的init方法
boolean init(JFinalConfig jfinalConfig, ServletContext servletContext) { this.servletContext = servletContext; this.contextPath = servletContext.getContextPath(); initPathUtil(); Config.configJFinal(jfinalConfig); // start plugin and init log factory in this method constants = Config.getConstants(); initActionMapping(); initHandler(); initRender(); initOreillyCos(); initTokenManager(); return true; }
简单看下initHandler()
private void initHandler() { Handler actionHandler = new ActionHandler(actionMapping, constants); handler = HandlerFactory.getHandler(Config.getHandlers().getHandlerList(), actionHandler); }
看下getHandler方法
public static Handler getHandler(List<Handler> handlerList, Handler actionHandler) { Handler result = actionHandler; for (int i=handlerList.size()-1; i>=0; i--) { Handler temp = handlerList.get(i); temp.next = result; temp.nextHandler = result; result = temp; } return result; }
这里获取到了Constants中的HandlerList,和新创建的ActionHandler构建成了一个Handler链,并且返回链顶的Handler
initRender();中初始化了JFinal中的render视图信息
initOreillyCos();中则初始化了文件上传插件
回到JFinalFilter的init方法
public void init(FilterConfig filterConfig) throws ServletException { createJFinalConfig(filterConfig.getInitParameter("configClass")); if (jfinal.init(jfinalConfig, filterConfig.getServletContext()) == false) throw new RuntimeException("JFinal init error!"); handler = jfinal.getHandler(); constants = Config.getConstants(); encoding = constants.getEncoding(); jfinalConfig.afterJFinalStart(); String contextPath = filterConfig.getServletContext().getContextPath(); contextPathLength = (contextPath == null || "/".equals(contextPath) ? 0 : contextPath.length()); }
init中接下来的代码就比较轻松了,为成员变量handler、constants、encoding、contextPathLength赋值,顺便调用了jfinalConfig.afterJFinalStart();方法,到这里整个框架的初始化完成
相关文章推荐
- 源码有毒:Jfinal源码解析(六)
- 源码有毒:Jfinal源码解析(三)
- 源码有毒:Jfinal源码解析(二)
- 源码有毒:JFinal源码解析之验证码
- 源码有毒:Jfinal源码解析(一)
- 源码有毒:Jfinal源码解析(五)
- JFinal源码解析--ActionMapping,Interceptor
- JFinal源码解析--从请求到处理返回流程
- jFinal路由解析源码分析
- JFinal 源码超详细解析之DB+ActiveRecord
- JFinal 源码--类映射解析
- JFinal 源码超详细解析之DB+ActiveRecord
- JFinal 源码超详细解析之DB+ActiveRecord
- JFinal源码解析系列之三
- JFinal源码解析与思想理解
- JFinal源码解析--render
- JFinal 源码超详细解析之DB+ActiveRecord
- JFinal源码解析一:JFinal是做什么用的,有什么特点
- jfinal源码解析
- JFinal 源码解析系列二