《JFinal框架应用与实践-PPT.ppt》由会员分享,可在线阅读,更多相关《JFinal框架应用与实践-PPT.ppt(66页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、JFinal框架应用与实践目录页第二章第二章 核心技术(架构、原理)第三章第三章 项目实战第一章第一章 认识JFinal第四章第四章 常见问题第一章认识JFinalWhat is JFinal?第一章 认识JFinalJFinal是基于Java语言的极速web开发框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、Python、PHP等动态语言的开发效率。(为您节省更多的时间去陪恋人、家人和朋友o()o)JFinal特点(一)1)MVC架构,设计精巧,使用简单2)遵循COC原则,零配置,无xml3)独创D
2、b+Record模式,灵活便利4)ActiveRecord支持,使数据库开发极致快速第一章 认识JFinal5)自动加载修改后的java文件,开发过程中无需重webserver大道至简,微内核全方位扩展架构JFinal特点(二)6)AOP支持,拦截器配置灵活,功能强大7)Plugin体系结构,扩展性强8)多视图支持,支持FreeMarker、JSP、Velocity9)强大的Validator后端校验功能第一章 认识JFinal10)功能齐全,拥有struts2的绝大部分功能11)体积小仅670K670K,且无第三方依赖第一章 认识JFinal1 1)有java基础2 2)想往javaweb方
3、向转的开发人员3 3)受够了SSH,想学一门简单实用的框架4 4)需求极速开发解决方案的开发者1 12 23 34 4什么样的人适合这门课程第一章 认识JFinalJFinal能做什么类型的项目nWEB项目项目 -使用jsp+servlet都能开发,更何况.-对Servlet的极薄封装,理论上来说Servet能做到的就可以做到nJFinal ORM 部分可以单独拿出来用于非部分可以单独拿出来用于非web项目项目n移动设备项目移动设备项目 -JFinalActiveRecordPlugin用于android的sqlite综上所述,JFinal最擅长的应用场景是Web项目,Web之外ActiveR
4、ecord应用最为常见开发什么项目不仅框架选型决定,还涉及到个人对项目和技术的驾驭能力9单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级9大家有疑问的,可以询问和交流大家有疑问的,可以询问和交流可以互相讨论下,但要小声点可以互相讨论下,但要小声点可以互相讨论下,但要小声点可以互相讨论下,但要小声点更简洁,更轻松,更极速u开发项目重在业务逻辑,框架只是提供工具而已u做同一个类型的项目,不同技术系的开发者只会选择自己熟悉的框架而已第一章 认识JFinal第一章 认识JFinal学会了Jfinal,我们能做什么?第二章核心技术第二章 核心技术第二章 核心技术逻辑架构运作原理1
5、.首先是客户端点击新增按钮,提交一个新增请求,请求中会带上服务端处理地址url2.所有请求都会被JFinalFilter拦截,然后调用Handler进行详细处理3.Handler是一个链条形式的调用,包括0-n个自定义Handler,以及最后一个ActionHandler,依次执行,当然可以自定义跳出。4.进入ActionHandler后,首先会根据请求的target从缓存的ActionMapping中映射获取到具体操作对应的Action对象,这个对象里面封装了方法名、方法上面的拦截器,方法所在的Controller,controller上面的拦截器等。然后根据Action以及Controll
6、er实例构造出ActionInvocation。5.接下来通过ActionInvocation的invoke进行具体处理,这是一个明显的Command模式的实现。首先是拦截器的调用,拦截器调用中会重新回调ActionInvocation的invoke,当拦截器调用完毕后,会调用当前操作的method6.当进入具体controller的新增方法时,调用基类的getModel(Systemparam.class);这个方法会从request中解析出所需要的数据,通过反射设置给具体的Model实体类,最终通过ActiveRecord来进行数据存储7.最后是页面渲染rerender第二章 核心技术uA
7、op:拦截器uConfig:通用配置uCore:核心处理,主要是Controller的调度uExt:扩展包uHandler:全局处理器uI18N:国际化uJson:json数据的一些常用操作ukit:一些工具类uLog:日志类uPlugin:插件处理uRender:渲染处理,比如对于FreeMark的支持uServer:服务器uToken:令牌uUpload:文件上传处理uValidate:验证处理,主要是数据持久化时的验证第二章 核心技术包简介第二章 核心技术关注关键的核心类nJFinalConfignControllernActiveRecordnAOPnEhCachePluginnVal
8、idatorJfinal体积虽小,但“麻雀虽小五脏俱全”,而且功能体系还是很庞大的第二章 核心技术1.JFinalConfig用于用于对整个整个web项目的整体配置目的整体配置第二章 核心技术1.JFinalConfigconfigConstant(Constants me)第二章 核心技术1.JFinalConfigconfigRoute(Routes me)第二章 核心技术1.JFinalConfigconfigRoute(Routes me)第二章 核心技术1.JFinalConfigconfigRoute(Routes me)第二章 核心技术1.JFinalConfigconfigPl
9、ugin(Plugins me)第二章 核心技术1.JFinalConfigconfigInterceptor(Interceptors me)第二章 核心技术1.JFinalConfigconfigHandler(Handlers me)第二章 核心技术2.ControllerMVC模式中的控制器模式中的控制器第二章 核心技术2.ControllergetPara 系列方法系列方法第二章 核心技术2.ControllergetModel与与getBean系列方法系列方法getModel用来接收页面表单域传递过来的model对象,表单域名称以”modelName.attrName”方式命名。除
10、了getModel以外,还提供了一个getBean方法用于支持传统的JavaBean。第二章 核心技术第二章 核心技术2.ControllersetAttr方法和方法和session操作方法操作方法第二章 核心技术2.ControllerRender系列方法系列方法第二章 核心技术3.ActiveRecord用于操作数据,将极大减少代用于操作数据,将极大减少代码量量第二章 核心技术3.ActiveRecordJFinal 独独创 Db+Record 模式模式第二章 核心技术3.ActiveRecord声明式事声明式事务第二章 核心技术3.ActiveRecordCache缓存机制存机制第二章
11、核心技术3.ActiveRecord复合主复合主键第二章 核心技术3.ActiveRecord多数据源支持多数据源支持3.ActiveRecord多数据源支持多数据源支持第二章 核心技术4.AOP面向切面面向切面编程程第二章 核心技术4.AOPInterceptor-拦截方法截方法 添加切面添加切面第二章 核心技术第二章 核心技术4.AOPInterceptor-invocation参数妙用参数妙用4.AOPBefore-拦截器的注解配置截器的注解配置第二章 核心技术第二章 核心技术4.AOPBefore-全局全局拦截器和截器和inject拦截器截器JFinal还支持全局拦截器以及 Injec
12、t 拦截器。全局拦截器需要在YourJFinalConfig进行配置,以下是配置示例:4.AOPClear-清除清除拦截器截器第二章 核心技术4.AOPClear-无参无参 有参清楚有参清楚第二章 核心技术4.AOPInterceptor 的触的触发第二章 核心技术JFinal中的AOP被划分为控制层AOP以及业务层AOP,严格来说业务层AOP并非仅限于在业务层使用,因为JFinalAOP可以应用于其它任何地方。第三章项目实战第三章 项目实战1.Eclipse/MyEclipse或者IntelliJIDEA2.JFinal的jar包3.JDK1.7+4.JettyServer(JFinal自带
13、的一个服务器)搭建前准备搭建前准备工欲善其事,必先利其器Eclipse下载地址http:/www.eclipse.org/downloadsJDK下载地址http:/ 项目实战第三章 项目实战Web项目创建项目创建注意:Targetruntime一定要选择第三章 项目实战第三章 项目实战Jfinal版本选择版本选择当前官方最新是2.2版本第三章 项目实战导入依赖导入依赖jar包包轻量量快捷快捷可拓展可拓展第三章 项目实战第三章 项目实战创建数据库创建数据库选择oracle数据库第三章 项目实战Jfinal配置类创建配置类创建第三章 项目实战Web.xml配置配置主要是配置Jfinal过滤器第三
14、章 项目实战项目分包项目分包JfinalMVC架构:跟普遍的mvc架构一样第三章 项目实战启动服务调试启动服务调试jetty-server-8.1.8.jar拷入。直接RunAs启动即可:看看Jfinal的环境是否搭建成功:以下是成功的范例第三章 项目实战项目实操预估耗时预估耗时1525分钟分钟第四章常见问题常见问题1、Can not create instance of class:demo.DemoConfig一、应该是你的路径有问题,打开你项目的javabuildpath面板,然后找到defaultoutputfolder,把这里的输出改为your_project/WebRoot/WEB
15、-INF/classes。二、javabuildpath面板中的Libraries中有部分库导入异常,检查出来修复就行。常见问题2、如果更改JFinal的web.xml 拦截后缀名jfinal/*“/*”不能正确处理“.html”这种后缀的动态请求。新增一个HtmSkipHandler文件publicclassHtmSkipHandlerextendsHandlerpublicvoidhandle(Stringtarget,HttpServletRequestrequest,HttpServletResponseresponse,booleanisHandled)intindex=target
16、.lastIndexOf(.htm);if(index!=-1)target=target.substring(0,index);nextHandler.handle(target,request,response,isHandled);在JfinalConfig文件中的configHandler新增me.add(newHtmSkipHandler();常见问题3、JFinal设置404和500等页面publicvoidconfigConstant(Constantsme)me.setError404View(TEMPLATE_PATH+/error/404.html);me.setError
17、500View(TEMPLATE_PATH+/error/500.html);常见问题4、Jfinal中文乱码问题-1(1)Config配置:YourJFinalConfig.configConstant(Constantsme)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.InvocationTargetExceptionCaused by:java.lang.ClassNotFoundException:freemarker.template.TemplateException缺乏freemarker相关的jar包感谢您的聆听THANK YOU!
限制150内