一次偶然的机会,接触到了Jfinal框架,算是二次开发吧。大概了解了一些框架中的东西。在这里做个记录。作为一个初入本框架的新手,挑灯将自己用到Jfianl的一些信息给大家分享
Jfinal 简介
JFinal 是基于Java 语言的国产的极速 web 开发框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。该介绍出于百度。
初入Jfianl
刚开始接触到这个项目,要二次开发怎么搞?肯定先撸代码了呀。但是框架流程不知道的话怎么撸,我就参考官方社区先自己写个demo,大体流程走一下,然后再看业务,感觉还不错。你也可以试试。官方社区地址:https://www.jfinal.com/
demo流程:
- 创建项目
- 引入jar包(因为我们这里不是用的Maven搭建的工程,Jar包需要自己去下载)
jfinal-4.2.jar 与 jetty-server-2019.3.jar - 改一下XML
<filter>
<filter-name>jfinal</filter-name>
<filter-class>com.jfinal.core.JFinalFilter</filter-class>
<init-param>
<param-name>configClass</param-name>
<param-value>demo.DemoConfig</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>jfinal</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
- 创建个config类继承JFinalConfig
package demo;
import com.jfinal.config.*;
public class DemoConfig extends JFinalConfig {
public void configConstant(Constants me) {
me.setDevMode(true);
}
public void configRoute(Routes me) {
me.add("/hello", HelloController.class);
}
public void configEngine(Engine me) {}
public void configPlugin(Plugins me) {}
public void configInterceptor(Interceptors me) {}
public void configHandler(Handlers me) {}
}
- 创建个controller继承Jfinal中心的Controller
package demo;
import com.jfinal.core.Controller;
public class HelloController extends Controller {
public void index() {
renderText("Hello JFinal World.");
}
}
- 页面的话暂时不写,然后运行,控制台输出Hello Jfianl Hello。就说明成功了
详细介绍config
上面demo是不是很简单,充分说明这个框架开发者的能力。膜拜…
其中需要我们配置的就是config中的几个配置,也就是 JFinalConfig子类需要实现六个抽象方法
- 第一个抽象方法,此方法用来配置JFinal常量值,如开发模式常量devMode的配置
public void configConstant(Constants me) {
me.setDevMode(true);
}
- 第二个抽象方法,这个就是映射地址了。只需要将映射地址和对应的controller关联起来就行了,访问时对应的controller地址+/方法名就能访问的到,如上面demo用到的映射
public void configRoute(Routes me) {
me.add("/hello", HelloController.class);
}
- 第三个抽象方法,没用到,参考官方文档:configEngine配置
- 第四个抽象方法, 此方法用来配置JFinal的Plugin,不如数据库什么的
public void configPlugin(Plugins me) {
DruidPlugin dp = new DruidPlugin(jdbcUrl, userName, password);
me.add(dp);
}
- 第五个抽象方法,这个方法是配置全局拦截器的
public void configInterceptor(Interceptors me) {
me.add(new AuthInterceptor());
}
那么问题来了,局部拦截器怎么弄呢?
很简单:拦截器不用再config中写,如果你要拦截某个controller 只需要controller上面加一个 注解 @Before(xxxx.class) 就行,就拦截这个接口下所有方法,如果只拦截某个方法就在 方法上加这个注解就行。
又如果你的全局拦截器只有某个方法不想拦截,只需要在这个方法上加 @Clear这个如果你做单点登陆可以用到
- 第六个抽象方法,此方法用来配置JFinal的Handler
public void configHandler(Handlers me) {
me.add(new ResourceHandler());
}
总结
沉浸于现实的忙碌之中,没有时间和精力思念过去,成功也就不会太远了。——雷音
轻量级框架,挺好用。更多细节参考Jfianl官方社区文档 https://www.jfinal.com/
社长人不错,遇到难题可以请教他。