JFinal快速入门笔记

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值