JFinal
公司的就项目使用的是JFinal框架,那么为了读懂并维护公司的项目,则需要对此框架进行学习、了解。
JFinal项目开源代码地址:https://gitee.com/jfinal/jfinal/tree/master
JFinal官网地址:https://jfinal.com/project/1
一个基于 Java 语言的极速 WEB + ORM + AOP + Template Engine 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。
一、JfinalConfig核心配置文件
基于JFinal框架的web项目,需要创建一个子类,继承自JFinalConfig,作为对我们整个web项目的配置
对于 JFinalConfig 主要有以下方法需要注意,如下:
public abstract class JFinalConfig {
/**
* 配置全局常量
*/
public abstract void configConstant(Constants me);
/**
* 配置访问路由
*/
public abstract void configRoute(Routes me);
/**
* 配置插件
*/
public abstract void configPlugin(Plugins me);
/**
* 配置全局拦截器
*/
public abstract void configInterceptor(Interceptors me);
/**
* 配置并控制所有web请求
*/
public abstract void configHandler(Handlers me);
/**
* 在项目启动之后会调
*/
public void afterJFinalStart(){};
/**
* 在项目停止之前会调
*/
public void beforeJFinalStop(){};
}
二、PropKit工具类
使用这个PropKit工具类来引入外部的配置文件,可以在系统的任何地方使用。
可以同时加载多个配置文件,第一个被加载的配置文件可以使用PropKit.get()方法直接获取,非被第一个加载的配置文件需要使用PropKit.use(…).get(…)来获得。
另外PropKit.use()方法在加载配置文件内容以后会将数据缓存在内存中,用PropKit.useliss(…)将缓存内容清除
三、Controller
用于定义action,一个Controller可以定义多个 action 。Controller 的线程是安全的。
在 Controller 中提供了getPara() , getModel() 系列方法 setAttr() 方法以及 rander() 系列方法 供给 action 使用
-
getPara 系列方法
获取request请求过来的参数
-
getBean 和 getModel 系列方法
接受页面表单传递过来的 model 对象 model 对应数据库字段名 bean 对应 setter 方法一直的属性名
-
setAttr 方法
该方法可以将各种数据传递给view并显示
-
getFile 文件上传
-
renderFile 文件下载
-
session 的操作方法
通过setSessionAttr(key,value) 方法可以往session里存数据,getSessionAttr(key) 用于读取session中的数据。代码中通过 getSession() 方法来获取Session对象
-
render 系列方法
渲染不同类型的视图返回给客户端 -支持的视图类型有:JFinal Templte ,Free Marker ,JSP,Volocity,JSON,File,Text,Html等等,也可通过继承Render抽象类来实现扩展视图类型。
四、AOP
分为三个概念:Interceptor、Before、Clear。
-
Interceptor
/** * Interceptor. */ public interface Interceptor { void intercept(Invocation inv); }
其可以对方法进行拦截,并提供机会在方法的前后添加切面代码,实现AOP的核心目标。
-
@Before
用这个注解来对拦截器进行配置,对类,方法都可以进行添加拦截。当一个method有多个级别的拦截器拦截,则拦截的顺序是:Global、Inject、Class、Method,如果是同级别的拦截器,就按配置顺序执行拦截。
-
@Clear
用于清除自身所处层次以上以上层的拦截器。
Clear用法记忆技巧 共有Global、Inject、Class、Method四层拦截器 清除只针对Clear本身所处层的向上所有层,本层与下层的不清除 不带参数时清除所有拦截器,单参数时清除指定拦截器
参考地址:https://wenku.baidu.com/view/99b75d36cf7931b765ce0508763231126edb77a4.html