您的位置:首页 > 其它

JFinal快速入门笔记

2017-02-21 17:00 344 查看
1.基于JFinal的web项目需要创建一个JFinalConfig的子类,用于配置整个项目,子类需要实现留个抽象方法:

public class DemoConfig extends JFinalConfig{
public void configConstant(Contants me){}
public void configRoute(Routes me){}
public void configEngine(Engine me){}
public void configPlugin(Plugin me){}
public void configInterceptor(Interceptors me){}
public void configHandler(Handlers me){}
}


(1)configConstant(Constants me)方法用于配置JFinal常量值,比如开发模式常量devMod配置如下:
public void configConstant(Constants me){
me.setDevMode(true);
}


Contants其他方法:setUrlParaSeparator(String string)设置参数分隔符(默认为"-")

(2)configRoute(Routes me)方法用于配置JFinal访问路由

Routes.setBaseViewPath(baseViewPath)方法用于设置此Routes内部所有Controller试图渲染时的基础路径
finalView=baseViewPath+viewPath+view(view以"/"开头时表示绝对路径,此时忽略

Routes类添加路由方法:add(String controllerKey,Class<? extends Controller> controllerClass,String viewPath)
                                  add(String controllerKey,Class<? extends Controller> controllerClass)
                                  controllerKey 访问Controller所需字符串,此字符串与Controller一一对应
                                  controllerClasscontrollerKey对应的Controller类
                                  viewPath是Controller返回的视图的相对路径(未指定是默认值为controllerKey)
controllerKey--Controller.index()
controllerKey/method--Controller.method()
controllerKey/method/v0-v1--Controller.method(),参数值:v0、v1
controllerKey/v0-v1--Controller.index(),参数值:v0、v1
访问一个确切的Action需要通过controllerKey与method来精确定位(method省略时默认值为index)
controllerKey、method、urlPara三部分必须使用"/"分隔

以上路由规则之外有提供@ActionKey注解
如UserController的controllerKey值为"/user",方法login()使用@ActionKey("/login")注解之后actionKey由原来的"/user/login"变为"/login"

默认路由规则不满足需求,可以使用Handler定制个性化路由

JFinal路由还可以进行拆分配置:
public class FrontRoutes extends Routes{
public void config(){
setBaseViewPath("/view/front");
add("/",IndexController.class);
add("/blog",BlogController.class);
}
}

public class AdminRoutes extends Router{
public void config(){
setBaseViewPath("/view/admin");
addInterceptor(new AdimnInterceptor())://添加Routes级别的拦截器,该拦截器将拦截AdminRoutes中添加的的所有Controller
add("/admin",AdminController.class);
add("/admin/user",UserController.class);
}
}

public class MyFinalConfig extends JFinalConfig{
public void configRoute(Routes me){
me.add(new FrontRoutes());//前端路由
me.add(new AdminRoutes());//后端路由
}
public void configContant(Contants me){}
public void configEngine(Engine me){}
public void configPlugin(Plugins me){}
public void configInterceptor(Interceptors me){}
public void configHandler(Handler me){}
}


以上代码将系统前端路由和后端路由拆分配置,使用JFinalConfig的configRouter(Routes me)方法合并,文件更简洁,同时有利于大规模团队开发时避免版本冲突

(3)configEngine(Engine me)方法用于配置Template Engine
(4)configPlugin(Plugins me)方法用于配置Plugin
(5)configInterceptor(Interceptors me)方法用于配置JFinal的全局拦截器,全局拦截器拦截所有action请求,可以@Clear注解在Controller中清除

JFinal的Interceptor配置粒度分为Global、Inject、Class、Method

(6)configHandler(Handlers me)方法用于配置Handler
如下代码配置了名为ResourceHandler的处理器:

public void configHandler(Handlers me){
     me.add(new ResourceHandler()):
}

(7)afterJFinalStart()与beforeJFinalStop()
以上两个方法供开发者在JFinalConfig继承类中覆盖
JFinal会在系统启动完成后毁掉afterJFinalStart()方法,会在系统关闭前毁掉beforeJFinalStop()方法,可以很方便地在系统启动house与关闭前让开发者有机会进行额外操作,如在系统启动就创建调度线程或在系统关闭前写回缓存
(8)ProKit工具类用来操作外部配置文件
2.Controller--JFinal核心类之一,作为MVC模式中的控制器,基于JFinal的Web英语的控制器需要继承该类,时定义Action方法的地点,组织Action的一种方式,一个Controller可以包含多个Action,线程安全
(1)Action
Controller中定义的public无参方法成为一个Action,Action时请求的最小单位,必须在Controller中声明,必须是public且没有形参
Controller中提供getPara、getModel系列、setAttr、render系列方法供Action使用
(2)getPara系列方法--用于从请求中获取参数
两种类型:getPara(String name)--对HttpServletRequest.getParameter(String name)的封装
              getPara(int index)/getPara()
(第一个参数为String类型,则将获取表单或者url中文号挂餐的域值;第一个参数为int或者无参,将获取urlPara中的参数值)
getPara("title")--返回表单域名为"title"的参数值
getParaToInt("age")--返回表单域名为"age"的参数值并转为int类型
getPara(0)--返回url请求中的urlPara参数的第一个值
getParaToInt(1)--返回url请求中的urlPara参数的第二个值并转换为int类型
getPara()--返回url请求中urlPara参数的整体值

(3)getModel域getBean系列方法
getModel用来接收页面表单域传递过来的model对象,表单域名称以"modelName.attrName"方式命名(getModel使用的attrName必须与数据表字段名完全一样)
getBean用于支持传统的Java Bean
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  web jfinal