多语言展示
当前在线:1553今日阅读:82今日分享:48

jfinal学习记录一

在官方的jfinal_demo下,练习了用户表的增删改查,以及登录权限过滤器的使用。
工具/原料
1

jfinal_demo

2

eclipse

3

JDK1.8

4

Oracle数据库

运行demo
1

下载jfinal的官方demo,然后导入eclipse中,按照启动说明把项目启动起来。

2

注意:使用 blog.sql 中的 sql 语句创建数据库与数据库表,因为我使用的是Oracle数据库,所以要先将demo中提供的SQL语句改成Oracle的。然后填写URL,user,password,因为jfinal默认使用的数据库是MySQL,所以要在Oracle数据库下运行,要设置方言。在configPlugin(Plugins me)这个方法中配置方言arp.setDialect(new OracleDialect());又因为Oracle大小写不敏感,所以查出来的数据字段名为大写,所以要 配置属性名(字段名)大小写不敏感容器工厂 arp.setContainerFactory(new CaseInsensitiveContainerFactory());

3

在DemoConfig文件里右键运行Java Application就可以了。启动成功。打开http://localhost/

4

在创建blog的时候,添加会报ORA-01400: 无法将 NULL 插入 ('SCOTT'.'BLOG'.'ID')这个错误,因为Oracle没有设置自增,所以在controller的save()方法里要将ID的值赋进去blog.set('id', 'SEQ_TDEPT_ID.nextval');然后就可以成功添加了

5

@Before(BlogValidator.class)但是当输入为空的时候,它的验证又会出错,最后发现将这个验证类里的handleError方法的controller.keepModel(Blog.class);这一句注释了之后就可以运行了

添加登录验证
1

这个是一个简单的登录验证,首页和登录页面还是可以进入,但是进入blog管理或者其他地方的时候会自动跳转到login页面

2

在UsertController中添加一个login方法,因为这个方法在控制器中所以也会被过滤器屏蔽,所以要在方法是添加@Clear注释将它上层的拦截器给屏蔽了

3

将拦截器方法改为如下图所示。然后在对应的类中调用它。

4

虽然如上图达到了要求,但是我要在页面显示用户的真实姓名却没有做到,直接在页面调用session的值不太好。然后就用了这个setAttr('loginName', getSessionAttr('loginName'));但是我最先只在控制器里使用导致一重定向值就消失了。最后我写了一个全局控制器过滤器,在configInterceptor(Interceptors me)这个方法里调用它,这样不管它要往哪个路由总要经过这个方法,当然,登录验证的拦截器也可以和这个并到一起。

5

在页面可以用if else 进行值的判断来让页面显示

6

显示效果如下

注意事项

不同数据中方言的使用这个要注意。。。

推荐信息