当前位置: 首页 > 工具软件 > JFinal > 使用案例 >

Jfinal学习(一)

穆宾白
2023-12-01

Jfinal学习(一)

一次偶然机会让我搜索到Jfinal,这是我学习的第一个Java框架

第一个? 可能会觉得奇怪,没办法我的学习路线和大部分人不一样

 

Jfinal官方是这么说的:

JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、python、php等动态语言的开发效率!为您节约更多时间,去陪恋人、家人和朋友 :)

 
学了两天,我决定开始做个小项目。:(

项目开始的第一天,我就遇到了不少的问题。看视频学习的时候没怎么认真的去听。也有可能是视频中的老师讲的节奏太快,导致在实际使用的时候十分吃力。

 

路由

在考虑项目如何去部署的时候,我就在想路由的问题。
比如说Controller -> View 的路径设置,还有View 的css js jq…等静态文件的路径问题

波总:不推荐使用自动路由的

由于在ThinkPHP yii中不需要配置路由,这让我很是头疼 :(

public void configRoute(Routes me) {        
    me.add(new ShopRoute());    //前端路由
    me.add(new AdminRoute());   //后台路由
}

 

public void config() {
    setBaseViewPath("/front");  //设置视图路径
    add("/", IndexController.class,"/index");   //路径 访问localhost的页面
}

 

 

路径

View中的css、js、jq、UI、image等文件路径的问题,不过幸好下载模板路径设置都还可以
都是

<link href="../AmazeUI-2.4.2/assets/css/admin.css" rel="stylesheet" type="text/css" />

路径都是 ../ 开头,复制到指定的视图路径基本正常

在Jfianl中需要在configEngine(视图引擎配置)中添加

    public void configEngine(Engine me) {
        me.setBaseTemplatePath(PathKit.getWebRootPath());//视图路径\WebRoot
    }

有了这一项配置之后,修改 ../ 为 /,绝对路径比相对路径好系列 :)

<link href="/AmazeUI-2.4.2/assets/css/admin.css" rel="stylesheet" type="text/css" />

此时路径以/开头将变为绝对路径,”/” 指的是 “/WebRoot”目录

 

 

 

Db+Record

视频中也基本是照着Jfinal官方的jfinal-3.1-manual.pdf念的,所有那一段的视频我果断没再看了。
参考manual中的Demo,上手还是很快的

//参数依次是: Table Name(表名),主键名(可以多个),值
Record user = Db.findById("shop_user","userid",2);

//更新登录的时间,IP地址
user = Db.findById("shop_user","userid",user.getBigInteger("userid")).set("logDate",new Date()).set("logIp",getRequest().getRemoteAddr());

//执行更新,Table Name(表名),主键,record
Db.update("shop_user","userid",user);

登录 Session

首先要实现登录功能,用Session的路径还是有点小曲折的。
百度搜索出来的大多是3年前,4年前,5年前的资料。Jfianl更新到3.1了,那些资料几乎不能做为参考

在实现的路径出现了,设置Session后在Interceptor(拦截器)中无法获取Session的问题。
:( 都因为看了那些 “过气” 资料的原因

//将user存入到Session中
    setSessionAttr("MemberSession",user);

 

//拦截器
public class LoginInterceptor implements Interceptor{
    public void intercept(Invocation inv) {
        Controller controller = inv.getController();  //获取控制器(控制层拦截)
        //通过控制器获取Session,之后判断是否为空
        if(null != controller.getSessionAttr("MemberSession")){
            System.out.println(controller.getSessionAttr("MemberSession"));
            inv.invoke();
        }else{
            controller.redirect("/login");//跳转到登录界面
        }

    }
}

由于没学过SSM框架,但是,从今天的实际使用上来看,Jfinal框架是比较方便的 :)

 类似资料: