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
相关文章推荐
- “ASP.Net快速入门”学习笔记
- “ASP.Net快速入门”学习笔记
- Python学习笔记 01 快速入门
- Entity Framework快速入门学习笔记第1篇—ORM
- C#自学快速入门经典笔记心得
- XML学习笔记,快速入门
- Entity Framework快速入门笔记第四篇—ModelFirst
- 【C++ Primer学习笔记】第1章:快速入门
- 【C++ Primer学习笔记】第1章:快速入门
- Entity Framework快速入门笔记第四篇—ModelFirst
- Python核心编程(第二版)学习笔记01 【第2章 快速入门】
- perl学习笔记 - 快速入门!
- Flash Builder 4快速入门----学习笔记
- 【C++ Primer学习笔记】第1章:快速入门
- C++ Primer 第一章 快速入门笔记
- (笔记)ASP.NET 2.0快速入门
- C++ Primer个人学习笔记 第1章 快速入门
- C++ Primer 第一章 快速入门笔记
- 第1讲韩顺平 PHP视频教程 zend framework zend介绍 zend快速入门 韩顺平php视频教程ppt 笔记心得
- Python学习笔记 01 快速入门