我写这篇博文并不是为了刻意贬低开源项目,我也不需要这么做,因为我没有写这种开源框架,不会产生竞争。

写这篇文章,我是从我个人的真实感受来写的。我敢说JFinal框架还是一个不错的MVC框架,ORM和支持的各种数据库比Servlet配置简单很多,功能也更强大,比如JDBC操作、事务支持、ORM、AOP、JSON等等。

"

先说一下JFinal的一些优点:

配置简单,使用方便

首先建立一个Maven网络项目:

Maven pom.xml加入JFinal包、数据库连接池等。

设置一个包并编写一些Java代码:

创建包:com.rocbin.jfinal

然后构建一个包配置,并编写一个集成JFinalConfig的配置类:

ConfigConstant方法必须写点什么,基本上什么都没有,它可以配置视图设置,字符编码,开发模式等等。

ConfigPlugin方法主要配置JFinal内置的插件和我们自己的插件,让这些插件随系统启停。

ConfigRoute是必须的。他所做的是将您的控制器配置映射到您想要的一些网址。

配置拦截器,这取决于您如何使用它。比如你可以用这个实现Shiro拦截URL请求的权限。

ConfigHandler,可以做更多的事情,可以拦截所有请求,包括JFinal Controller不处理的请求类型。如果您想要使用变量ContextPath,并且您想要它的名称是ctx,并且您想要使用${ctx}在jsp页面中输出web上下文路径,您可以自定义一个Handler来处理它。

然后让我们建立一个模型。我们需要做的是简单的用户注册,用户列表,用户中心。

设置包模型和系统类别用户:

我是这样写模型的。我救了自己的手。我先像写Bean一样写完字段属性,然后通过IDEA的LiveTemplate中自己定义的模板快速完成getter和setter,最后写了几个需要的DAO方法。我不喜欢定义字段名的方式,因为感觉没有我写的getter/setter方便。

我保留带注释的属性只是为了随时替换模型。其实用工具直接生成实体类更好。更何况数据库100%是Bean对应的字段名,都是我设计的。

几个月前,我在OSC上回答了问题,并就java.util.Date的兼容性给了作者反馈:

不知道作者是否过于自信,没有深入研究这个问题的存在。

为了确认这个问题的存在,我之前一直用jtds驱动。写这个博客的时候怀疑是jtds引起的,然后换了微软驱动sqljdbc4.jar测试,发现插入Active Record的时候还是有问题。

我使用sql server2008 R2数据库。这个问题困扰了我半年。我头疼。我尝试了几种方法,最后选择了上面的解决方案。幸运的是,java.sql.Timestamp是java.util.Date的子类

好了,我们继续。

在我们写完模型之后,拥塞模型作为一个实体类和DAO。现在我们可以写服务了。不建议直接用DAO做事,因为你很难保证别人在这个DAO对应的Service中是否有一些逻辑被控制。

设置包服务:

对于一个比较简单的Service,我使用和来规范这个属性是否可以传入null值,IDE也会有相应的提示。

基本上没什么,只是添加一个事务给addUser。是的,这是一种控制JFinal提供的数据库事务的简单方法。JFinal将处理这些事务的嵌套。如果外部事务是READ _ COMMITED,而内部事务是Serializable,JFinal会自动将连接的事务级别升级为SERIALIZABLE。JFinal的Connection是基于ThreadLocal的,所以她就不说Spring的事务传播了。另外,JFinal的事务也可以通过在你的Controller Class或者Controller方法上批注Controller @ before来实现,JFinal Tx的包在com . JFinal . plugin . active record . Tx中。

然后创建一个控制器类:

控制器主要实现几个功能:首页索引、用户注册页面注册、用户列表列表、添加用户界面、用户中心首页。

剩下的jsp页面,代码比较简单,为了有点外观,用bootstrap来修饰一下。

首页首页index.jsp:

上面只有两个按钮,一个点击跳转到用户列表页面,一个点击跳转到用户注册页面。

页面截图:

第二个页面是用户列表页面user-list.jsp:

该页面主要显示系统中的所有用户信息。我不考虑分页,因为这里不需要分页。如果要分页,在JFinal中,模型和记录都有一个分页查询方法。

页面截图:

第三页:用户注册页面registry.jsp:

我没有写任何java,忽略了数据验证。一般情况下,最好先用java做一个验证,然后对后端表单填写的数据做一个严格的验证。

效果截图:

第四页是用户中心user-home.jsp:

这个页面比较简单。上面显示的数据都是JFinal处理的。jsp页面直接使用el表达式来处理输出。我考虑过XSS,但这只是一个例子。比如XSS可能会出现在user.profile的内容里。

页面截图:

基本上JFinal完成的这个简单的需求就需要这些代码,不需要XML配置,繁琐。

其实我好像写过JFinal的入门教程,和JFinal的官方博客很像。

前面的片段还说了几个不好听的“bugs>

很不爽,逼你加个判断。

活动记录中的问题

我发现当我的SystemUser表中没有数据的时候,插入第一个数据返回的主键的数据类型不是我期望的int类型,而是BigDecimal,这也很麻烦。怎么会遇到这个问题?刚试过,没再出现。不好意思。

为了做得更好,JFinal需要更多的人来支持它。虽然你打着快速发展的旗号,但不要太Geek,到Spring后面去,吸收一些优秀的精华。另外,JFinal的JavaEE框架集成比较麻烦,你要自己写。MyBatis想融入JFinal,感觉像噩梦。我还不如学习SpringMVC,集成我想要的框架。

本文涉及到大量的代码。详情请点击“阅读原文”。

推荐阅读

点击“阅读原文”查看更多精彩内容

1.《jfinal JFinal 极速开发框架的优点和不足的地方》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《jfinal JFinal 极速开发框架的优点和不足的地方》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/tiyu/1784394.html