侧边栏壁纸
  • 累计撰写 46 篇文章
  • 累计创建 38 个标签
  • 累计收到 2 条评论
隐藏侧边栏

初入Jfinal

哒卟刘先生
2022-01-08 / 0 评论 / 0 点赞 / 95 阅读 / 2,452 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-01-08,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

一次偶然的机会,接触到了Jfinal框架,算是二次开发吧。大概了解了一些框架中的东西。在这里做个记录。作为一个初入本框架的新手,挑灯将自己用到Jfianl的一些信息给大家分享

Jfinal 简介

JFinal 是基于Java 语言的国产的极速 web 开发框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。该介绍出于百度。

初入Jfianl

刚开始接触到这个项目,要二次开发怎么搞?肯定先撸代码了呀。但是框架流程不知道的话怎么撸,我就参考官方社区先自己写个demo,大体流程走一下,然后再看业务,感觉还不错。你也可以试试。官方社区地址:https://www.jfinal.com/

demo流程:

  1. 创建项目
  2. 引入jar包(因为我们这里不是用的Maven搭建的工程,Jar包需要自己去下载)
    jfinal-4.2.jar 与 jetty-server-2019.3.jar
  3. 改一下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>
  1. 创建个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) {}
}
  1. 创建个controller继承Jfinal中心的Controller
package demo;
import com.jfinal.core.Controller;
public class HelloController extends Controller {
    public void index() {
       renderText("Hello JFinal World.");
    }
}
  1. 页面的话暂时不写,然后运行,控制台输出Hello Jfianl Hello。就说明成功了

详细介绍config

上面demo是不是很简单,充分说明这个框架开发者的能力。膜拜...
其中需要我们配置的就是config中的几个配置,也就是 JFinalConfig子类需要实现六个抽象方法

  1. 第一个抽象方法,此方法用来配置JFinal常量值,如开发模式常量devMode的配置
public void configConstant(Constants me) {
    me.setDevMode(true);
}
  1. 第二个抽象方法,这个就是映射地址了。只需要将映射地址和对应的controller关联起来就行了,访问时对应的controller地址+/方法名就能访问的到,如上面demo用到的映射
public void configRoute(Routes me) {
    me.add("/hello", HelloController.class);
}
  1. 第三个抽象方法,没用到,参考官方文档:configEngine配置
  2. 第四个抽象方法, 此方法用来配置JFinal的Plugin,不如数据库什么的
public void configPlugin(Plugins me) {
    DruidPlugin dp = new DruidPlugin(jdbcUrl, userName, password);
    me.add(dp);
}
  1. 第五个抽象方法,这个方法是配置全局拦截器的
public void configInterceptor(Interceptors me) {
    me.add(new AuthInterceptor());
}

那么问题来了,局部拦截器怎么弄呢?
很简单:拦截器不用再config中写,如果你要拦截某个controller 只需要controller上面加一个 注解 @Before(xxxx.class) 就行,就拦截这个接口下所有方法,如果只拦截某个方法就在 方法上加这个注解就行。
又如果你的全局拦截器只有某个方法不想拦截,只需要在这个方法上加 @Clear这个如果你做单点登陆可以用到

  1. 第六个抽象方法,此方法用来配置JFinal的Handler
public void configHandler(Handlers me) {
    me.add(new ResourceHandler());
}

总结

沉浸于现实的忙碌之中,没有时间和精力思念过去,成功也就不会太远了。——雷音

轻量级框架,挺好用。更多细节参考Jfianl官方社区文档 https://www.jfinal.com/
社长人不错,遇到难题可以请教他。

0

评论区