Jfinal学习(一)

来源:互联网 发布:java边界布局 编辑:程序博客网 时间:2024/06/05 10:32

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(表名),主键,recordDb.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框架是比较方便的 :)

原创粉丝点击