4完整版本.JFinal开发框架使用经验交流分享_第1页
4完整版本.JFinal开发框架使用经验交流分享_第2页
4完整版本.JFinal开发框架使用经验交流分享_第3页
4完整版本.JFinal开发框架使用经验交流分享_第4页
4完整版本.JFinal开发框架使用经验交流分享_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JFinal开发框架使用经验交流分享■目录框架简介前后台开发整体流程框架提供的实用功能常用UI组件使用说明

AnyQuestions?■框架简介 JFinal框架是基于前台DWZ富客户端框架和后台Nutz轻量级开发框架搭建,本意为指环,象征着团队精神。

DWZ框架展现的界面使用jQuery局部渲染技术,与后台交互方式完全采用Ajax的方式进行。主界面固定分为四个区域,其中D区作为动态界面展示区域,即我们编写的JSP页面基本都是通过点击左侧C区中的某个菜单后渲染到D区来显示的。■框架简介

Nutz框架本身不依赖于任何第三方类库,整体jar包体积大小不超1.5M。它是一组轻便小型的框架的集合,各个部分可以被独立使用。Nutz以不损害运行时效率为前提使Java开发人员可以获得更快的开发速度和更少的代码量,从而最大限度的提高Web开发人员的生产力。

…MVC注解风格的配置,内置多文件上传功能DAO针对JDBC的薄封装,事务模板,无缓存IOCJSON风格的配置文件,声明时切片支持AOP

轻便快速的切面编程支持JSON内置JSON引擎,更智能的解析和渲染JSON■前后台开发整体流程

研发人员日常的开发任务实际上即是对数据表的增删改查操作,当然这期间还有一系列的工作要做,如下将分步逐一介绍如何使用JFinal框架完成这些工作。

JavaBean实体与表的映射Service服务层实现业务逻辑Action方法定义URL访问入口JSP页面展现业务数据■

JavaBean实体与表的映射1、实体需先声明@Table注解并设值;2、属性需声明@Column注解,值对应表字段名,若某几个属性上不声明则只有这几个属性不建立映射关系,若全不声明则所有属性都建立映射且和表字段名称一致;3、若有其它表的字段需要关联显示,可创建视图并为实体指定@View注解,视图中关联的字段加@Readonly注解。在对实体做查询时直接使用视图,而添加、修改或删除时将直接对表操作。4、支持一对一、一对多和多对多映射。■Service服务层实现业务逻辑1、首先需要在对应模块的service包下创建接口并继承自IBaseService;2、在service.impl包下创建对应的实现类并继承自BaseServiceImpl,命名规则接口以I开头,实现类取接口名称去掉I并以Impl结尾;3、实现类中定义有参构造方法并声明@IocBean注解,args对应构造方法的参数,name为Service在Ioc容器中的名称。4、接口中声明抽象方法,实现类中编写个性化操作的业务代码。■Action方法定义URL访问入口1、创建Action并继承自BaseAction,为Action声明@IocBean和@At注解,@At指定了URL的命名空间,理论上每个Action根据模块的划分都需要有不同的命名空间以防止URL冲突;2、引用要使用的接口并在其上声明@Inject注解将Service注入到Action中,这样Action中的方法便可直接调用Service中的方法了;3、Action方法声明了@At注解后,该方法的URL访问入口即可确定,如示例中list方法的入口为/demo/user/list方法上声明@Ok即可指定服务端的响应方式,如示例中list方法执行后将响应/WEB-INF/demo/user-list.jsp页面。■JSP页面展现业务数据1、顶部搜索区2、快捷工具栏3、数据列表区4、分页条■框架提供的实用功能通用数据检索方式可以适应80%的列表数据检索需求通用业务接口实现可以满足60%增删改查业务,弱化了Dao层但支持自定义扩展及复杂业务实现简单数据导出功能适用于最基本的列表数据导出到Excel文件枚举、字典、码表避免大部分前后台硬编码情况JSTL自定义函数库杜绝JSP页面直接编写Java代码的陋习丰富的帮助类库减少日常编码工作量及出错几率通用文件池设计上传文件统一规划,支持自定义子目录存放■通用数据检索方式AB■通用业务接口实现

框架定义了IBaseService接口及其实现类,并实现了基本的增删改查方法,简单业务可直接在Action中注入IBaseService接口并使用其提供的方法即

可;若需实现复杂业务,建议自定义接口并

继承自IBaseService,根据其提供的基础方

法来完成复杂的业务逻辑。若仍无法满足复

杂业务,可以在Service中

直接使用原生dao或注入 SqlExecutor执行原生SQL

■枚举、字典、码表两个构造参数的枚举类若实现了IBaseEnum接口并声明了@Enum注解,那么该枚举类可作为缓存数据字典使用。

在classpath的dic目录下,编辑.js类型的文件,即可将内容为Json格式的数据加载到缓存数据字典中。

某实体类与数据表映射后声明@Code注解,表中的数据即可分类加载到缓存数据字典中。■简单数据导出功能■通用文件池设计

在Action方法上声明UploadAdapter类型的@AdapterBy注解后即可作为文件上传的入口。若适配器UploadAdapter是从Ioc容器中获取的attachUploadAdapter实例,那么在系统启动时,会自动在应用服务器所在磁盘根目录创建upload/attach文件夹。当文件上传成功后,会自动在attach子目录下创建固定格式的文件,并将上传文件的相关信息记录在sys_upload表中,通过UploadFile实体可以查询或删除。■JSTL自定义函数库自定义函数示例JFinal_str${JFinal_str:contains("1,11,2,3,4",",",

"1")}${JFinal_str:counts("1,11,2,3,4",",")}${JFinal_str:joinEntries(Collection,"id",",")}${JFinal_str:cut("abcdefg",4)}${JFinal_str:leftPad("qwer",8,"a")}${JFinal_str:substringBefore("a_b_c","_")}${JFinal_str:substringAfterLast("a_b_c","_")}${JFinal_str:escape("<script>alert(123)</script>")}${JFinal_str:decode("http%3A%2F%2F")}JFinal_map${JFinal_map:get(enums["TYPE_SEX"],"1")}JFinal_list${JFinal_list:add(list,“a")}JFinal_calc${JFinal_calc:max(12.3,34.6)}■丰富的帮助类库帮助类说明JsonUtil解析Json字符串和渲染Json对象的帮助类StringUtil字符串相关操作帮助类RandomUtil生成随机数、随机字符串的帮助类NumUtil多数值基本运算的帮助类ParseUtil字符串转数值等类型的帮助类DateUtil日期相关帮助类PropsUtilstatic静态和active动态属性文件帮助类HttpUtil模拟HTTP发送报文请求的帮助类InvokeUtilJava反射相关帮助类RegexUtil正则表达式相关帮助类……■常用UI组件使用说明

日常开发中需要编写的界面的基本可分为navTab标签页和dialog模态框两种渲染方式,其它的UI组件都是将二者作为容器进一步渲染出来的。

…■navTab标签页1、创建方式2、行为交互在编辑保存或批量删除等操作时,框架通过默认的navTabAjaxDone或开发人员自定义的js回调方法来与后台进行交互,通过后台响应指定内容的Json对象来引导navTab的下一步行为(刷新当前navTab下的界面、关闭当前界面并刷新某一navTab下的界面或者只是提示后台返回的错误信息)。

<atarget=“navTab”rel=“tab-user-edit”title=“用户信息新增“

href=“${CTX_PATH}/admin/system/user/edit/0?tid=${param.tid}”>新增</a>target指定了界面的渲染方式为标签页rel指定了navTab的唯一ID标识title指定了navTab上的文字信息,若无title属性文字默认为<a>标签的内容href为ajax异步请求地址,将对应后台返回的jsp页面内容直接渲染到rel对应的navTab下■dialog模态框1、创建方式2、行为交互在模态框中编辑保存等操作时,框架通过默认的dialogAjaxDone或开发人员自定义的js回调方法来与后台进行交互,通常为关闭当前dialog界面并刷新某一navTab下的界面或者只是提示后台返回的错误信息。

<atarget="dialog"width="670"height="400"title="员工附加信息"

href="${CTX_PATH}/admin/user/prob/edit/1?tid=${param.tid}">王强</a>target指定了界面的渲染方式为模态框rel指定了dialog的唯一ID标识,默认所有页面都会渲染到同一dialog下title指定了dialog上的文字信息,若无title属性文字默认为<a>标签的内容href为ajax异步请求地址,将对应后台返回的jsp页面内容直接渲染到rel对应的dialog下其它附加属性及释义如下:width和height:指定dialog的初始宽度和高度。注意属性值为纯数字,不要加px;maxable和minable:是否允许窗口最大化和最小化,默认都为true;drawable和resizable:是否允许拖拽和动态改变窗口大小,默认都为true。■dialog查找带回通过在<a>标签上指定lookupGroup属性即可借助dialog渲染出界面并按指定规则带回相应信息到主界面。lookupGroup指定了需要带回填充的字段名的前缀。而$.bringBack方法第一个参数则描述了都可以带回哪些信息到主界面的HTML元素中;第二个参数指定了主界面<a>标签元素的ID,若该元素存在,则dialog关闭前还会触发<a>的点击事件。<alookupGroup="pe"width="700"height="350"title="基本信息选择" href="${CTX_PATH}/admin/perf/eval/user/lookup">[基本信息选择]</a><aclass="btnSelect"title="确认选择"href="javascript:$.bringBack({targetName:'王强'},'需要触发点击事件的元素ID');">确认选择</a>■附件批量上传1324■富文本编辑器1、若需要调整宽高,直接修改textarea的style即可,另外tex

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论