1. JFinal类java
private void initRender() { RenderFactory renderFactory = RenderFactory.me();//工厂设计模式、单例 renderFactory.init(constants, servletContext); }
2.RenderFactory类json
设置编码格式、开发者模式、Render工厂(支持JSP、FreeMarker、Velocity三种视图模式)设计模式
采用了工厂设计模式、单例设计模式,工厂模式方便咱们在controller中,使用renderXxx 方法将text json object等类型,包装成Render对象,以单例模式保存着这个Render对象,同时在初始化后保存着咱们选用的视图模式IMainRenderFactory,以及servletContextthis
public void init(Constants constants, ServletContext servletContext) { this.constants = constants;//咱们的配置 RenderFactory.servletContext = servletContext; // init Render Render.init(constants.getEncoding(), constants.getDevMode());//设置编码格式和开发者模式 initFreeMarkerRender(servletContext); initVelocityRender(servletContext); initFileRender(servletContext); // create mainRenderFactory if (mainRenderFactory == null) { ViewType defaultViewType = constants.getViewType();//根据咱们的配置选择所需用用到的Render工厂 if (defaultViewType == ViewType.FREE_MARKER) mainRenderFactory = new FreeMarkerRenderFactory(); else if (defaultViewType == ViewType.JSP) mainRenderFactory = new JspRenderFactory(); else if (defaultViewType == ViewType.VELOCITY) mainRenderFactory = new VelocityRenderFactory(); else throw new RuntimeException("View Type can not be null."); } // create errorRenderFactory if (errorRenderFactory == null) { errorRenderFactory = new ErrorRenderFactory(); } }