×
JFinal 摘要

第0章 极速体验Model与Bean

0.1 极速体验 Generator0.2 JFinal相关生成文件0.3 Model 与 Bean 合体

第一章 快速上手

1.1 JFinal创建项目1.2 放入 JFinal 库文件1.3 修改 web.xml1.4 添加 java 文件1.5 JFinal启动项目1.6 开启浏览器看效果1.7 Maven 下开发

第二章 JFinalConfig

2.1 概述2.2 configConstant(Constants me)2.3 configRoute(Routes me)2.4 configPlugin (Plugins me)2.5 configInterceptor (Interceptors me)2.6 configHandler (Handlers me)2.7 afterJFinalStart()与 beforeJFinalStop()2.8 PropKit

第三章 Controller

3.1 概述3.2 Action3.3 getPara 系列方法3.4 getModel 与 getBean 系列方法3.5 setAttr 方法3.6 getFile 文件上传3.7 renderFile 文件下载3.8 session 操作方法3.9 render 系列方法

第四章 AOP

4.1 概述4.2 Interceptor4.3 Before4.4 Clear4.5 Interceptor 的触发4.6 Duang、Enhancer4.7 Inject 拦截器

第五章 ActiveRecord

5.1 概述5.2 ActiveRecordPlugin5.3 Model5.4 JavaBean 与 Model 合体5.5 JFinal 独创 Db + Record 模式5.6 声明式事务5.7 Cache5.8 Dialect 多数据库支持5.9 表关联操作5.10 复合主键5.11 Oracle 支持5.12 多数据源支持5.13 非 web 环境下使用 ActiveRecord

第六章 EhCachePlugin

6.1 概述6.2 EhCachePlugin6.3 CacheInterceptor6.4 EvictInterceptor6.5 CacheKit6.6 ehcache.xml 简介

第七章 RedisPlugin

7.1 概述7.2 RedisPlugin7.3 Redis 与 Cache7.4 非 web 环境使用 RedisPlugin第八章 Validator第九章 国际化第十章 FreeMarker 基础第十一章 JFinal 架构及扩展

2.3 configRoute(Routes me)


此方法用来配置 JFinal 访问路由,如下代码配置了将”/hello”映射到 HelloController 这个控 制器 , 通 过 以 下 的 配 置 , http://localhost/hello 将 访 问 HelloController.index() 方法, 而 http://localhost/hello/methodName 将访问到 HelloController.methodName()方法。


public void configRoute(Routes me) 

{ me.add("/hello", 

HelloController.class);


Routes 类主要有如下两个方法:


public Routes add(String controllerKey, Classextends Controller>

controllerClass, String viewPath)

public Routes add(String controllerKey, Classextends Controller>

controllerClass)


第一个参数 controllerKey 是指访问某个 Controller 所需要的一个字符串,该字符串唯一对 应一个 Controller,controllerKey 仅能定位到 Controller。第二个参数 controllerClass 是该 controllerKey 所对应到的 Controller。第三个参数 viewPath 是指该 Controller 返回的视图的相对 路径(该参数具体细节将在 Controller 相关章节中给出)。当 viewPath 未指定时默认值为 controllerKey。

JFinal 路由规则如下表:

url  组成

访问目标

controllerKey

YourController.index()

controllerKey/method

YourController.method()

controllerKey/method/v0-v1

YourController.method(),所带 url 参数值为:v0-v1

controllerKey/v0-v1

YourController.index(),所带 url 参数值为:v0-v1

从表中可以看出,JFinal 访问一个确切的Action(Action 定义见 3.2 节)需要使用 controllerKey与 method 来精确定位,当method 省略时默认值为 index。urlPara 是为了能在 url 中携带参数 值,urlPara 可以在一次请求中同时携带多个值,JFinal 默认使用减号“-”来分隔多个值(可 通过constants. setUrlParaSeparator(String)设置分隔符),在 Controller  中可以通过 getPara(intindex)分别取出这些值。controllerKey、method、urlPara 这三部分必须使用正斜杠“/”分隔。 注意,controllerKey 自身也可以包含正斜杠“/”,如“/admin/article”,这样实质上实现了struts2 的 namespace 功能。


JFinal 在以上路由规则之外还提供了 ActionKey 注解,可以打破原有规则,以下是代码示 例:

public class UserController extends Controller {

@ActionKey("/login")

public void login() 

{ render("login.html");

}


假定 UserController 的 controllerKey 值为“/user”,在使用了@ActionKey(“/login”)注解以 后,actionKey 由原来的“/user/login”变为了“/login”。该注解还可以让 actionKey 中使用减号或 数字等字符,如“/user/123-456”。


如果 JFinal 默认路由规则不能满足需求,开发者还可以根据需要使用 Handler 定制更加个 性化的路由,大体思路就是在 Handler 中改变第一个参数 String target 的值。

JFinal 路由还可以进行拆分配置,这对大规模团队开发特别有用,以下是代码示例:

public class FrontRoutes extends Routes {

public void config(){

add("/",IndexController.class);

add("/blog", BlogController.class);

}

}


public class AdminRoutesextends Routes{

public void config(){

add("/admin",AdminController.class);

add("/admin/user", UserController.class);

}

}


public class MyJFinalConfigextends JFinalConfig{

publicvoid configRoute(Routesme) 

{ me.add(new FrontRoutes());  // 前端路由 

me.add(new AdminRoutes()); // 后端路由

}

public void configConstant(Constantsme) {}

public void configPlugin(Pluginsme) {}

public void configInterceptor(Interceptorsme) {}

public void configHandler(Handlersme) {}

}

如上三段代码,FrontRoutes 类中配置了系统前端路由,AdminRoutes 配置了系统后端路由, MyJFinalConfig.configRoute(…)方法将拆分后的这两个路由合并起来。使用这种拆分配置不仅 可以让 MyJFinalConfig 文件更简洁, 而且有利于大规模团队开发, 避免多人同时修改 MyJFinalConfig 时的版本冲突。


分类导航

关注微信下载离线手册

bootwiki移动版 bootwiki
(群号:472910771)