一次偶然机会让我搜索到Jfinal,这是我学习的第一个Java框架
第一个? 可能会觉得奇怪,没办法我的学习路线和大部分人不一样
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”目录
视频中也基本是照着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的路径还是有点小曲折的。
百度搜索出来的大多是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框架是比较方便的 :)