1、extends JFinalConfig 实现
configConstant(Constants me) :
开发模式常量 devMode 的配置,默认视
图类型 ViewType 的配置,
me.setDevMode(true);
me.setViewType(ViewType.JSP);
2、configRoute(Routes me) 实现HelloController.index() 方 法
http://localhost/hello/methodName 将 访 问 到
HelloController.methodName()
public void configRoute(Routes me) {
me.add("/hello", HelloController.class); //map 集合
}
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
下划线“_”来分隔多个
3、 configPlugin (Plugins me)配置数据路径
4、onfigInterceptor (Interceptors me) 拦载器、
在此处配置的拦截器将会对所有的请求进行拦截,除非使用
arp.addMapping("user", User.class);
arp.addMapping("article", Article.class);
ActiveReceord 中定义了
addMapping(String tableName, Class<? extends Model> modelClass>)方法,该方法
建立了数据库表名到 Model 的映射关系。
public class User extends Model<User> {
public static final User dao = new User();
}
以上代码中的 User 通过继承 Model,便立即拥有的众多方便的操作数据库
的方法 添加到数据中
以下为 Model 的一些常见用法: 在那个model里就查那个对象的值
// 创建name属性为James,age属性为25的User对象并添加到数据库
new User().set("name", "James").set("age", 25).save();
// 删除id值为25的User
User.dao.deleteById(25);
// 查询id值为25的User将其name属性改为James并更新到数据库
User.dao.findById(25).set("name", "James").update();
// 查询id值为25的user, 且仅仅取name与age两个字段的值
User user = User.dao.findById(25, "name, age");
// 获取user的name属性
String userName = user.getStr("name");
// 获取user的age属性
Integer userAge = user.getInt("age");
// 查询所有年龄大于18岁的user
List<User> users = User.dao.find("select * from user where age>18")
// 分页查询年龄大于18的user,当前页号为1,每页10个user
Page<User> userPage = User.dao.paginate(1, 10, "select *", "from user
where age > ?", 18)
@ClearInterceptor 在 Controller 中清除
5 Action
Controller 以及在其中定义的 public 无参方法称为一个 Action。Action 是请
求的最小单位。Action 方法必须在 Controller 中声明,该方法必须是 public 可见
性且没有形参。
public class HelloController extends Controller {
public void index() {
renderText("此方法是一个action");
}
public void test() {
renderText("此方法是一个action");
}
}
以上代码中定义了两个 Action: HelloController.index()、 HelloController.test()。
在Controller中提供了getPara系列方法setAttr方法以及render系列方法供Action
使用getPara 系列方法HttpServletRequest.getParameter(String name)的封装 取值
列方法是去获取
urlPara中所带的参数值。 getParaMap与getParaNames分别对应HttpServletRequest
的 getParameterMap 与 getParameterNames。
getPara 使用例子:
方法调用 返回值
getPara(”title”) 返回页面表单域名为“title”参数值
getParaToInt(”age”) 返回页面表单域名为“age”的参数值并转为 int 型
getPara(0) 返回 url 请求中的 urlPara 参数的第一个值,如
http://localhost/controllerKey/method/v0_v1_v2 这
个请求将返回”v0”
getParaToInt(1) 返回url请求中的urlPara参数的第二个值并转换成
int 型,如 http://localhost/controllerKey/method/2_5_9 这
个请求将返回 5
3.4 setAttr 方法
setAttr(String, Object)转调了 HttpServletRequest.setAttribute(String, Object),
该方法可以将各种数据传递给 View 并在 View 中显示出来。
render 路径问题
render(”test.html”) 渲染名为 test.html 的视图,该视图的全路径
为”/path/test.html”
render(”/other_path/test.html”) 渲染名为 test.html 的视图,该视图的全路径
为”/other_path/test.html”,即当参数以”/”开头时将
采用绝对路径。
renderJson() 将所有通过 Controller.setAttr(String, Object)设置
的变量转换成 json 数据并渲染。
renderJson(“users” userList) 以”users”为根,仅将 userList 中的数据转换成 json
数据并渲染。
renderJson(new
String[]{“user”, “blog”})
仅将 setAttr(“user”, user)与 setAttr(“blog”, blog)设
置的属性转换成 json 并渲染。使用 setAttr 设置的
其它属性并不转换为 json。
Interceptor 应用 相当于 spring 注解