Jfinal自我理解(JFinalConfig)

JFinalConfig

democonfig(启动类)需要继承JFinalCongig这个类,用于对整个web项目进行配置,并在web.xml文件中指定configClass

JFinalConfig子类需要实现六个抽象方法

public class DemoConfig extends JFinalConfig {
    public void configConstant(Constants me){} //常量配置
    public void configRoutes(Routes me){} //路由配置
    public void configEngine(Engine me){} //配置模版引擎
    public void configPlugin(Plugin me){} //配置插件
    public void configInterceptor(Interceptor me){} //配置全局拦截器
    public void configHandler(Handler me){}  //配置处理器
}

configConstant

个人理解就是一些项目必要的配置 开发模式 依赖注入 配置日志 等一些常用配置官方已经写好了:点击跳转configConstant常用配置

configRoute

配置路由的一些属性

me.add("/hello", HelloController.class);

比如:

public void configRoute(Routes me) {
    // 添加路由
    me.add("/hello", HelloController.class); 
}
  • 前面的参数为链接,后面是对应的controller
  • 添加之后访问http://localhost/hello路径就能跳转到HelloController里的index方法
  • 必须在HelloController里写index这个方法 不然报404错误
  • 也可以在链接上加入你的方法名

比如:

//这是 HelloController 方法  如果不写index方法,写了个aaa方法
public class HelloController extends Controller {
    public void aaa() {
       renderText("我是最帅的那个男人.");
    }
}

链接输入http://localhost:8080/hello 会出现以下情况
在这里插入图片描述
输入http://localhost:8080/hello/aaa 才能显示出来
在这里插入图片描述

Routes.setBaseViewPath(baseViewPath)

内部的所有 Controller 设置视图渲染时的基础路径

config部分:

routes.setBaseViewPath("/wozuishuai");
routes.add("/admin", AdminController.class,"admin");

controller部分

public class AdminController extends Controller{
	public void index() {
		render("A.html");
	}	
}

他会去找webapp/wozuishuai/hello/A.html 这个html

极简路由规则

在这里插入图片描述
路由拆分、模块化
具体参考官方文档:configRoute(…)

configEngine(…)

此方法用来配置Template Engine,以下是代码示例:

public void configEngine(Engine me) {
    me.addSharedFunction("/view/common/layout.html");
    me.addSharedFunction("/view/common/paginate.html");
    me.addSharedFunction("/view/admin/common/layout.html");
}

注意
me.setToClassPathSourceFactory()、me.setBaseTemplatePath(…)、me.setDevMode(…) 这三个配置要放在最前面,因为后续的 me.addSharedFunction(…) 等配置对前面三个配置有依赖。

configPlugin(…)

此方法用来配置JFinal的Plugin,如下代码配置了Druid数据库连接池插件与ActiveRecord数据库访问插件。通过以下的配置,可以在应用中使用ActiveRecord非常方便地操作数据库。

public void configPlugin(Plugins me) {
    DruidPlugin dp = new DruidPlugin(jdbcUrl, userName, password);
    me.add(dp);
    
    ActiveRecordPlugin arp = new ActiveRecordPlugin(dp);
    arp.addMapping("user", User.class);
    me.add(arp);
}

JFinal插件架构是其主要扩展方式之一,可以方便地创建插件并应用到项目中去。

configInterceptor(…)

配置全局拦截器
configInterceptor 方法用来配置全局拦截器,全局拦截器分为两类:控制层、业务层,以下是配置示例:

public void configInterceptor(Interceptors me) {
    // 以下两行代码配置作用于控制层的全局拦截器
    me.add(new AuthInterceptor());
    me.addGlobalActionInterceptor(new AaaInterceptor());
    
    // 以下一行代码配置业务层全局拦截器
    me.addGlobalServiceInterceptor(new BbbInterceptor());
}

以上 me.add(…) 与 me.addGlobalActionInterceptor(…) 两个方法是完全等价的,都是配置拦截所有 Controller 中 action 方法的拦截器。而 me.addGlobalServiceInterceptor(…) 配置的拦截器将拦截业务层所有 public 方法。

configHandler(…)

此方法用来配置JFinal的Handler,如下代码配置了名为ResourceHandler的处理器,Handler可以接管所有web请求,并对应用拥有完全的控制权,可以很方便地实现更高层的功能性扩展。
public void configHandler(Handlers me) {
    me.add(new ResourceHandler());
}

onStart()、onStop() 回调配置

系统回调 系统开启与结束之前会自动调用这两个方法 可以自己在里面写一些启动前或关闭之前做的一些操作

// 系统启动完成后回调
public void onStart() {
}
 
// 系统关闭之前回调
public void onStop() {
}

jfinal 3.6 版本之前这两个方法名为:afterJFinalStart() 与 beforeJFinalStop()。

PropKit 读取配置

PropKit工具类用来读取外部键值对配置文件,PropKit可以极度方便地在系统任意时空使用,配置文件的格式如下:

xml:

userName=james
email=no-reply@jfinal.com
devMode=true

取时:

PropKit.use("config.txt");
String userName = PropKit.get("userName");
String email = PropKit.get("email");
 
// Prop 配合用法
Prop p = PropKit.use("config.txt");
Boolean devMode = p.getBoolean("devMode");
  • 第一个被加载的配置文件可以使用PorpKit.get(…)方法直接操作,非第一个被加载的配置文件则需要使用PropKit.use(…).get(…)来操作。
  • PropKit 的使用并不限于在 YourJFinalConfig 中,可以在项目的任何地方使用。此外PropKit.use(…)方法在加载配置文件内容以后会将数据缓存在内存之中,可以通过PropKit.useless(…)将缓存的内容进行清除。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值