资源描述
*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,二级,三级,四级,五级,精选课件ppt,*,JFinal,框架应用与实践,目录页,第二章,核心技术,(架构、原理,),第三章,项目实战,第一章,认识,JFinal,第四章,常见问题,第一章,认识,JFinal,What is,JFinal?,第一章 认识,JFinal,JFinal,是基于Java 语言的极速 web 开发框架,其核心设计目标是,开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful,。在拥有Java语言所有优势的同时再拥有ruby、Python、,PHP,等动态语言的开发效率。,(,为您节省更多的时间去陪恋人、家人和朋友,o()o),JFinal,特点,(,一,),1,),MVC,架构,设计精巧,使用简单,2,),遵循,COC,原则,零配置,无,xml,3,),独创,Db+Record,模式,灵活便利,4,),ActiveRecord,支持,使数据库开发极致快速,第一章 认识,JFinal,5,),自动加载修改后的,java,文件,开发过程中无需重,webserver,大道至简,微内核全方位扩展架构,JFinal,特点,(,二,),6,),AOP,支持,拦截器配置灵活,功能强大,7,),Plugin,体系结构,扩展性强,8,),多视图支持,支持,FreeMarker,、,JSP,、,Velocity,9,),强大的,Validator,后端校验功能,第一章 认识,JFinal,10,),功能齐全,拥有,struts2,的绝大部分功能,11,),体积小仅,670K,,且无第三方依赖,第一章 认识,JFinal,1,),有,java,基础,2,),想往,javaweb,方向转的开发人员,3,),受够了,SSH,,想学一门简单实用的框架,4,),需求极速开发解决方案的开发者,1,2,3,4,什么样的人,适合,这门课程,第一章 认识,JFinal,JFinal,能做,什么类型,的项目,WEB项目,-使用jsp+servlet都能开发,更何况.,-对Servlet的极薄封装,理论上来说Servet能做到的就可以做到,JFinal ORM 部分可以单独拿出来用于非web项目,移动设备项目,-JFinal ActiveRecordPlugin用于android的sqlite,综上所述,JFinal最擅长的应用场景是Web项目,Web之外ActiveRecord应用最为常见,开发什么项目不仅框架选型决定,还涉及到个人对项目和技术的驾驭能力,更简洁,更轻松,更极速,开发项目重在业务逻辑,框架只是提供工具而已,做同一个类型的项目,不同技术系的开发者只会选择自己熟悉的框架而已,第一章 认识,JFinal,第一章 认识,JFinal,学会了,Jfinal,,我们能做,什么?,第二章,核心技术,第二章 核心技术,第二章 核心技术,逻辑架构,运作原理,1.,首先是客户端点击新增按钮,提交一个新增请求,请求中会带上服务端处理地址,url,2.,所有请求都会被,JFinalFilter,拦截,然后调用,Handler,进行详细处理,3.Handler,是一个链条形式的调用,包括,0-n,个自定义,Handler,,以及最后一个,ActionHandler,,依次执行,当然可以自定义跳出。,4.,进入,ActionHandler,后,首先会根据请求的,target,从缓存的,ActionMapping,中映射获取到具体操作对应的,Action,对象,这个对象里面封装了方法名、方法上面的拦截器,方法所在的,Controller,,,controller,上面的拦截器等。然后根据,Action,以及,Controller,实例构造出,ActionInvocation,。,5.,接下来通过,ActionInvocation,的,invoke,进行具体处理,这是一个明显的,Command,模式的实现。首先是拦截器的调用,拦截器调用中会重新回调,ActionInvocation,的,invoke,,当拦截器调用完毕后,会调用当前操作的,method,6.,当进入具体,controller,的新增方法时,调用基类的,getModel(Systemparam.class);,这个方法会从,request,中解析出所需要的数据,通过反射设置给具体的,Model,实体类,最终通过,ActiveRecord,来进行数据存储,7.,最后是页面渲染,rerender,第二章 核心技术,Aop,:拦截器,Config,:通用配置,Core,:核心处理,主要是,Controller,的调度,Ext,:扩展包,Handler,:全局处理器,I18N:,国际化,Json:json,数据的一些常用操作,kit,:一些工具类,Log,:日志类,Plugin,:插件处理,Render,:渲染处理,比如对于,FreeMark,的支持,Server,:服务器,Token,:令牌,Upload,:文件上传处理,Validate,:验证处理,主要是数据持久化时的验证,第二章 核心技术,包简介,第二章 核心技术,关注关键的,核心类,JFinalConfig,Controller,ActiveRecord,AOP,EhCachePlugin,Validator,Jfinal,体积虽小,,但“麻雀虽小五脏俱全”,而且功能体系还是很庞大的,第二章 核心技术,1.JFinalConfig,用于对整个,web,项目的整体配置,第二章 核心技术,1.JFinalConfig,configConstant(Constants me),第二章 核心技术,1.JFinalConfig,configRoute(Routes me),第二章 核心技术,1.JFinalConfig,configRoute(Routes me),第二章 核心技术,1.JFinalConfig,configRoute(Routes me),第二章 核心技术,1.JFinalConfig,configPlugin(Plugins me),第二章 核心技术,1.JFinalConfig,configInterceptor(Interceptors me),第二章 核心技术,1.JFinalConfig,configHandler(Handlers me),第二章 核心技术,2.Controller,MVC,模式中的控制器,第二章 核心技术,2.Controller,getPara,系列方法,第二章 核心技术,2.Controller,getModel,与,getBean,系列方法,getModel,用来接收页面表单域传递过来的,model,对象,表单域名称以”,modelName.attrName”,方式命名。除了,getModel,以外,还提供了一个,getBean,方法用于支持传统的,Java Bean,。,第二章 核心技术,第二章 核心技术,2.Controller,setAttr,方法和,session,操作方法,第二章 核心技术,2.Controller,Render,系列方法,第二章 核心技术,3.ActiveRecord,用于操作数据,将极大减少代码量,第二章 核心技术,3.ActiveRecord,JFinal,独创,Db+Record,模式,第二章 核心技术,3.ActiveRecord,声明式事务,第二章 核心技术,3.ActiveRecord,Cache,缓存机制,第二章 核心技术,3.ActiveRecord,复合主键,第二章 核心技术,3.ActiveRecord,多数据源支持,3.ActiveRecord,多数据源支持,第二章 核心技术,4.AOP,面向切面编程,第二章 核心技术,4.AOP,Interceptor-,拦截方法 添加切面,第二章 核心技术,第二章 核心技术,4.AOP,Interceptor-invocation,参数妙用,4.AOP,Before-,拦截器的注解配置,第二章 核心技术,第二章 核心技术,4.AOP,Before-,全局拦截器和,inject,拦截器,JFinal,还支持,全局拦截器以及,Inject,拦截器,。全局拦截器需要在,YourJFinalConfig,进行配置,以下是配置示例:,4.AOP,Clear-,清除拦截器,第二章 核心技术,4.AOP,Clear-,无参 有参清楚,第二章 核心技术,4.AOP,Interceptor,的触发,第二章 核心技术,JFinal,中的,AOP,被划分为控制层,AOP,以及业务层,AOP,,严格来说业务层,AOP,并非仅限于在业务层使用,因为,JFinal AOP,可以应用于其它任何地方。,第三章,项目实战,第三章 项目实战,1.Eclipse/MyEclipse,或者,IntelliJIDEA,2.JFinal,的,jar,包,3.JDK1.7+,4.Jetty Server(JFinal,自带的一个服务器,),搭建前准备,工欲善其事,必先利其器,Eclipse,下载地址,JDK,下载地址,JFinal,下载地址 当前最新的版本为,jfinal-2.2-all.aip,5,、,JFinal,配置,类创建,6,、,Web.xml,配置,7,、项目分包,8,、启动服务器,调试,1,、,Web,项目,创建,2,、,JFinal,版本,选择,3,、导入依赖包,4,、创建数据库,开发环境,搭建流程,第三章 项目实战,第三章 项目实战,Web,项目创建,注意:,Target runtime,一定,要选择,第三章 项目实战,第三章 项目实战,Jfinal,版本选择,当前官方最新是,2.2,版本,第三章 项目实战,导入依赖,jar,包,轻量,快捷,可拓展,第三章 项目实战,第三章 项目实战,创建数据库,选择,oracle,数据库,第三章 项目实战,Jfinal,配置类创建,第三章 项目实战,Web.xml,配置,主要是配置,Jfinal,过滤器,第三章 项目实战,项目分包,Jfinal MVC,架构,:,跟普遍的,mvc,架构一样,第三章 项目实战,启动服务调试,jetty-server-8.1.8.jar,拷入。,直接,RunAs,启动即可:看看,Jfinal,的环境是否搭建成功,:,以下是成功的范例,第三章 项目实战,项目实操,预估耗时,1525,分钟,第四章,常见问题,常见问题,1,、,Can not create instance of class:demo.DemoConfig,一、应该是你的路径有问题,打开你项目的,java build path,面板,然后找到,default output folder,把这里的输出改为,your_project/WebRoot/WEB-INF/classes,。,二、,java build path,面板中的,Libraries,中有部分库导入异常,检查出来修复就行。,常见问题,2,、如果更改,JFinal,的,web.xml,拦截后缀名,jfinal,/*,“/*”,不能正确处理“,.html”,这种后缀的动态请求。,新增一个,HtmSkipHandler,文件,public classHtmSkipHandlerextends Handler,public void handle(String target,HttpServletRequest request,HttpServletResponse response,boolean isHandled),int index=target.lastIndexOf(.htm);,if(index!=-1),target=target.substring(0,index);,nextHandler.handle(target,request,response,isHandled);,在,JfinalConfig,文件中的,configHandler,新增,me.add(new HtmSkipHandler();,常见问题,3,、,JFinal,设置,404,和,500,等页面,public void configConstant(Constants me),me.setError404View(TEMPLATE_PATH+/error/404.html);,me.setError500View(TEMPLATE_PATH+/error/500.html);,常见问题,4,、,Jfinal,中文乱码问题,-1,(1)Config配置:,YourJFinalConfig.configConstant(Constants me)me.setEncoding(utf-8);,(2)数据库连接配置:,jdbcUrl=jdbc:mysql:/127.0.0.1/jfinal?characterEncoding=utf8,(3)假设是页面发送 GET 请求,中文字符须要 encoding,,除非在 tomcat 的 server.xml 中的 Connector 标记中加入了 URIEncoding=UTF-8 属性,常见问题,4,、,Jfinal,中文乱码问题,-2,(4)假设是 jsp 页面:,(5)假设是其他 html 页面:,(6)另外 eclipse workspace 的字符编码最好也配置成 utf-8,常见问题,5,、,java.lang.RuntimeException:,java.lang.reflect.InvocationTargetException,Caused by:java.lang.ClassNotFoundException:,freemarker.template.TemplateException,缺乏,freemarker,相关的,jar,包,感谢您的聆听,THANK YOU!,此课件下载可自行编辑修改,供参考!,感谢您的支持,我们努力做得更好!,66,精选课件ppt,
展开阅读全文