




已阅读5页,还剩60页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JFinal框架应用与实践,目录页,第二章核心技术(架构、原理),第三章项目实战,第一章认识JFinal,第四章常见问题,第一章认识JFinal,WhatisJFinal?,第一章认识JFinal,JFinal是基于Java语言的极速web开发框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、Python、PHP等动态语言的开发效率。(为您节省更多的时间去陪恋人、家人和朋友o()o),JFinal特点(一),第一章认识JFinal,大道至简,微内核全方位扩展架构,JFinal特点(二),第一章认识JFinal,第一章认识JFinal,1,2,3,4,什么样的人适合这门课程,第一章认识JFinal,JFinal能做什么类型的项目,WEB项目-使用jsp+servlet都能开发,更何况.-对Servlet的极薄封装,理论上来说Servet能做到的就可以做到JFinalORM部分可以单独拿出来用于非web项目移动设备项目-JFinalActiveRecordPlugin用于android的sqlite综上所述,JFinal最擅长的应用场景是Web项目,Web之外ActiveRecord应用最为常见,开发什么项目不仅框架选型决定,还涉及到个人对项目和技术的驾驭能力,更简洁,更轻松,更极速,开发项目重在业务逻辑,框架只是提供工具而已做同一个类型的项目,不同技术系的开发者只会选择自己熟悉的框架而已,第一章认识JFinal,第一章认识JFinal,学会了Jfinal,我们能做什么?,第二章核心技术,第二章核心技术,第二章核心技术,逻辑架构,运作原理1.首先是客户端点击新增按钮,提交一个新增请求,请求中会带上服务端处理地址url2.所有请求都会被JFinalFilter拦截,然后调用Handler进行详细处理3.Handler是一个链条形式的调用,包括0-n个自定义Handler,以及最后一个ActionHandler,依次执行,当然可以自定义跳出。4.进入ActionHandler后,首先会根据请求的target从缓存的ActionMapping中映射获取到具体操作对应的Action对象,这个对象里面封装了方法名、方法上面的拦截器,方法所在的Controller,controller上面的拦截器等。然后根据Action以及Controller实例构造出ActionInvocation。5.接下来通过ActionInvocation的invoke进行具体处理,这是一个明显的Command模式的实现。首先是拦截器的调用,拦截器调用中会重新回调ActionInvocation的invoke,当拦截器调用完毕后,会调用当前操作的method6.当进入具体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:验证处理,主要是数据持久化时的验证,第二章核心技术,包简介,第二章核心技术,关注关键的核心类,JFinalConfigControllerActiveRecordAOPEhCachePluginValidator,Jfinal体积虽小,但“麻雀虽小五脏俱全”,而且功能体系还是很庞大的,第二章核心技术,1.JFinalConfig,用于对整个web项目的整体配置,第二章核心技术,1.JFinalConfig,configConstant(Constantsme),第二章核心技术,1.JFinalConfig,configRoute(Routesme),第二章核心技术,1.JFinalConfig,configRoute(Routesme),第二章核心技术,1.JFinalConfig,configRoute(Routesme),第二章核心技术,1.JFinalConfig,configPlugin(Pluginsme),第二章核心技术,1.JFinalConfig,configInterceptor(Interceptorsme),第二章核心技术,1.JFinalConfig,configHandler(Handlersme),第二章核心技术,2.Controller,MVC模式中的控制器,第二章核心技术,2.Controller,getPara系列方法,第二章核心技术,2.Controller,getModel与getBean系列方法,getModel用来接收页面表单域传递过来的model对象,表单域名称以”modelName.attrName”方式命名。除了getModel以外,还提供了一个getBean方法用于支持传统的JavaBean。,第二章核心技术,第二章核心技术,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并非仅限于在业务层使用,因为JFinalAOP可以应用于其它任何地方。,第三章项目实战,第三章项目实战,1.Eclipse/MyEclipse或者IntelliJIDEA2.JFinal的jar包3.JDK1.7+4.JettyServer(JFinal自带的一个服务器),搭建前准备,工欲善其事,必先利其器,Eclipse下载地址/downloadsJDK下载地址,5、JFinal配置类创建,6、Web.xml配置,7、项目分包,8、启动服务器调试,1、Web项目创建,2、JFinal版本选择,3、导入依赖包,4、创建数据库,开发环境搭建流程,第三章项目实战,第三章项目实战,Web项目创建,注意:Targetruntime一定要选择,第三章项目实战,第三章项目实战,Jfinal版本选择,当前官方最新是2.2版本,第三章项目实战,导入依赖jar包,轻量,快捷,可拓展,第三章项目实战,第三章项目实战,创建数据库,选择oracle数据库,第三章项目实战,Jfinal配置类创建,第三章项目实战,Web.xml配置,主要是配置Jfinal过滤器,第三章项目实战,项目分包,JfinalMVC架构:跟普遍的mvc架构一样,第三章项目实战,启动服务调试,jetty-server-8.1.8.jar拷入。直接RunAs启动即可:看看Jfinal的环境是否搭建成功:以下是成功的范例,第三章项目实战,项目实操,预估耗时1525分钟,第四章常见问题,常见问题,1、Cannotcreateinstanceofclass:demo.DemoConfig,一、应该是你的路径有问题,打开你项目的javabuildpath面板,然后找到defaultoutputfolder,把这里的输出改为your_project/WebRoot/WEB-INF/classes。二、javabuildpath面板中的Libraries中有部分库导入异常,检查出来修复就行。,常见问题,2、如果更改JFinal的web.xml拦截后缀名,jfinal/*“/*”不能正确处理“.html”这种后缀的动态请求。,新增一个HtmSkipHandler文件publicclassHtmSkipHandlerextendsHandlerpublicvoidhandle(Stringtarget,HttpServletRequestrequest,HttpServletResponseresponse,booleanisHandled)intindex=target.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.setError500View(TEMPLATE_PATH+/error/500.html);,常见问题,4、Jfinal中文乱码问题-1,(1)Config配置:YourJFinalConfig.configConstant(Constantsme)me.setEncoding(utf-8);(2)数据库连接配置:jdbcUrl=jdbc:mysql://jfinal?characterEncoding=utf8(3)假设是页面发送GET请求,中文字符须要encoding,除非在tomcat的server.xml中的Connector标记中加入了URIEncoding=UTF-8属性,常见问题,4、Jfinal中文乱码问题-2,(4)假设是jsp页面:(5)假
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论