说说你为什么不用JFinal

说说你为什么不用JFinal,第1张

原因有三点:

1、它没有给我带来便利, 并且找不到使用它的理由。

2、很难与其他主流框架进行整合。

3、过度封装并且使用它的同时我很难遵守代码规范。

先说说第一点, 对比spring系列, 并没有感觉它有多么便利, 创建一个Jfinal工程我需要1分钟, 创建一个Spring工程我也需要1分钟, 但是在实际开发时, Jfinal所消耗的时间会更多, 因为它不灵活。

并且代码比较啰嗦, 比如创建一个Controller, 我需要继承他的一个公共类, 并且需要在配置类里配置好它的路由, 并且需要在接口方法中使用getRequest方法。

JFinal WEB MVC和Struts简要对比:

JFinal遵循COC原则,零配置,无xml,而struts需要配置来支持action、result、interceptor配置与使用。

JFinal开发效率非常之高,相对Struts开发效率能提升五到十倍。

JFinal代码量非常省,相对Struts开发能省50%到70%代码量。

JFinal遵循Restful规范,而struts自身未提供Restful支持。Struts可以通过插件来支持restful,但支持不彻底使用不方便。

JFinal提供数据库支持,属于一站式解决方案,而struts仅为WEB MVC框架并未提供数据库支持。

JFinal学习成本极低,只需两个小时学习即可上手开发,而Struts学习成本相对较高。

JFinal相对Struts来说更加轻量级,JFinal打包jar文件仅173KB,而struts则为18MB。

JFinal ORM和Hibernate简要对比:

JFinal采用ActiveRecord实现数据库 *** 作支持,较Hibernate开发效率提升六到十倍。

JFinal ActiveRecord较Hibernate学习成本低,一小时内能上手开发。

JFinal零配置,对数据库支持五个无特点:无xml、无annotation、无getter、无setter、无attribute,极大降低了代码量,统计证实代码量节省70%到95%。

JFinal数据库 *** 作完全采用原生sql,相对Hibernate采用的HQL学习成本低,功能更强大,性能更高,稳定性好。

网页链接

getPara系列方法

Controller提供了getPara系列方法用来从请求中获取参数。getPara系列方法分为两种类型。第一种类型为第一个形参为String的getPara系列方法。该系列方法是对>

第二种类型为第一个形参为int或无形参的getPara系列方法。该系列方法是去获取urlPara中所带的参数值。getParaMap与getParaNames分别对应>

记忆技巧:第一个参数为String类型的将获取表单或者url中问号挂参的域值。第一个参数为int或无参数的将获取urlPara中的参数值。

getPara使用例子:

getBean与getModel系列 :网页链接

getModel用来接收页面表单域传递过来的model对象,表单域名称以”modelNameattrName”方式命名,getModel使用的attrName必须与数据表字段名完全一样。

getBean方法用于支持传统Java Bean,包括支持使用jfinal生成器生成了getter、setter方法的Model,页面表单传参时使用与setter方法相一致的attrName,而非数据表字段名。

getModel与getBean区别在于前者使用数据库表字段名而后者使用与setter方法一致的属性名进行数据注入。建议优先使用getBean方法。

解决方案:

1、HTML静态化

效率最高、消耗最小的就是纯静态化的html页面,所以尽可能使网站上的页面采用静态页面来实现,这个最简单的方法其实也是最有效的方法。但是对于大量内容并且频繁更新的网站,无法全部手动去挨个实现,于是出现了常见的信息发布系统CMS,像常访问的各个门户站点的新闻频道,甚至他们的其他频道,都是通过信息发布系统来管理和实现的,信息发布系统可以实现最简单的信息录入自动生成静态页面,还能具备频道管理、权限管理、自动抓取等功能,对于一个大型网站来说,拥有一套高效、可管理的CMS是必不可少的。

2、服务器分离

对于Web服务器来说,不管是Apache、IIS还是其他容器,是最消耗资源的,于是有必要将与页面进行分离,这是基本上大型网站都会采用的策略,他们都有独立的服务器,甚至很多台服务器。这样的架构可以降低提供页面访问请求的服务器系统压力,并且可以保证系统不会因为问题而崩溃,在应用服务器和服务器上,可以进行不同的配置优化,比如apache在配置ContentType的时候可以尽量少支持,尽可能少的LoadModule,保证更高的系统消耗和执行效率。 这一实现起来是比较容易的一现,如果服务器集群 *** 作起来更方便,如果是独立的服务器,新手可能出现上传只能在服务器本地的情况下,可以在令一台服务器设置的IIS采用网络路径来实现服务器,即不用改变程序,又能提高性能,但对于服务器本身的IO处理性能是没有任何的改变。

executeQuery是专门用于执行sql查询的方法,从你的sql来开不是查询,而是执行的见表和插入语句,这种 *** 作应该使用executeUpdate方法,同时不要把见表语句和insert语句拼成一个整个的语句去执行,这种方式在数据库直接执行ok没问题,但通过代码走

使用jquery的ajax方式从服务器加载json数据至客户端即可以实现省市级联的效果。

具体如下:

1)、页面初始化时,首先加载所有的省;

2)、选择省,ajax传送编码至服务器,服务器根据选中的省编码,返回省下所有的市。

这样就能动态实现了省市级联的效果了。

jdbc 对于 mysql 的 year 类型处理比较诡异,这个在 jfinal 开发之初就发现过,所以不建议使用这个类型,可以使用 integer 类型代替它,省心省力。

最后补充一下,除了 blob、clob这两种类型之外,jfinal 对所有jdbc返回的数据都未经过任何加工或者转换,都是原封不动地转交给了开发者,所以这种类型相关的问题,直接参考 jdbc 对相关数据库字段类型的官方文档即可。

jfinal 不方便干预这个行为,因为不同的数据库支持不同的数据类型,而且jdbc对其也有不同的转换规则,开发者的习惯也不同,所以原封不动地将数据转交给开发者是比较好的选择。

以上就是关于说说你为什么不用JFinal全部的内容,包括:说说你为什么不用JFinal、Jfinal拦截器中如何获取POST数据、jfinal如何解决数据库移植的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9765815.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存