JFinal学习

JFinal

1、基于 JFinal 的 web 项目需要创建一个继承自 JFinalConfig 类的子类,该类用于对整个 web
项目进行配置。

    JFinalConfig 子类需要实现六个抽象方法:

1)configConstant(Constants me)

    此方法用来配置 JFinal 常量值,如开发模式常量 devMode 的配置,如下代码配置了 JFinal运行在开发模式:

public void configConstant(Constants me) {
   me.setDevMode(true);
}

    在开发模式下, JFinal 会对每次请求输出报告,如输出本次请求的 URL、 Controller、 Method以及请求所携带的参数。
2)configRoute(Routes me)

    此方法用来配置 JFinal 访问路由,如下代码配置了将”/”映射到 HelloController 这个控制 器 , 在controller中通过使用@ActionKey注解访 问 HelloController.login() 方法。

public void configRoute(Routes me) {		
     me.setBaseViewPath("/view");
     me.add("/", HelloController.class);
}
public class HelloController extends Controller {
	@ActionKey("/login")//通过ActionKey注解使在浏览器中输入http://localhost/login来访问login.html
	public void login() {
		//renderText("Hello JFinal World.");
		render("login.html");//重定向到login页面
	}
} http://localhost/login来访问login.html
	public void login() {
		//renderText("Hello JFinal World.");
		render("login.html");//重定向到login页面
	}
} 

    Routes.setBaseViewPath(baseViewPath)方法用于为该Routes内部的所有 Controller 设置视图渲染时的基础路径,该基础路径与 Routes.add(…,viewType)方法传入的viewPath以及Controller.render(view)方法传入的view参数联合组成最终的视图路径,规则如下:
    finalView = baseViewPath + viewPath + view

    注意:当view以“/”字符打头时表示绝对路径,baseViewPath 与 viewPath 将被忽略。

3)configEngine(Engine me)

    此方法用来配置 Template Engine 。

4)configPlugin (Plugins me)

    此方法用来配置 JFinal 的 Plugin 。JFinal 插件架构是其主要扩展方式之一,可以方便地创建插件并应用到项目中去 。

5)configInterceptor (Interceptors me)

    此方法用来配置 JFinal 的全局拦截器,全局拦截器将拦截所有 action 请求,除非使用@Clear 在 Controller 中清除 。而Interceptor 配置粒度分为Global、 Inject、 Class、 Method 四个层次 。

6)configHandler (Handlers me)
    此方法用来配置 JFinal的 Handler处理器,Handler可以接管所有 web 请求,并对应用拥有完全的控制权,可以很方便地实现更高层的功能性扩展。

2、afterJFinalStart()与 beforeJFinalStop()

    JFinalConfig中的 afterJFinalStart()与 beforeJFinalStop()方法供开发者在 JFinalConfig继承类中覆盖。 JFinal 会在系统启动完成后回调 afterJFinalStart()方法, 会在系统关闭前回 调beforeJFinalStop()方法。 这两个方法可以很方便地在项目启动后与关闭前让开发者有机会进行额外操作,如在系统启动后创建调度线程或在系统关闭前写回缓存。

3、PropKit

    PropKit 工具类用来操作外部配置文件。 PropKit 可以极度方便地在系统任意时空使用 。

public class AppConfig extends JFinalConfig {
    public void configConstant(Constants me) {
    // 第一次使用use加载的配置将成为主配置,可以通过PropKit.get(...)直接取值
        PropKit.use("a_little_config.txt");
        me.setDevMode(PropKit.getBoolean("devMode"));
    }
    public void configPlugin(Plugins me) {
    // 非第一次使用use加载的配置,需要通过每次使用use来指定配置文件名再来取值
        String redisHost = PropKit.use("redis_config.txt").get("host");
        int redisPort = PropKit.use("redis_config.txt").getInt("port");
        RedisPlugin rp = new RedisPlugin("myRedis", redisHost, redisPort);
        me.add(rp);
    // 非第一次使用 use加载的配置,也可以先得到一个Prop对象,再通过该对象来获取值
        Prop p = PropKit.use("db_config.txt");
        DruidPlugin dp = new DruidPlugin(p.get("jdbcUrl"), p.get("user")…);
        me.add(dp);
    }
}

    PropKit 可同时加载多个配置文件,第一个被加载的配置文件可以使用PorpKit.get(…)方法直接操作,非第一个被加载的配置文件则需要使用 PropKit.use(…).get(…)来操作。 PropKit 的使用并不限于在 YourJFinalConfig 中,可以在项目的任何地方使用。 此外PropKit.use(…) 方 法 在 加 载 配 置 文 件 内 容 以 后 会 将 数 据 缓 存 在 内 存 之 中 , 可 以 通 过PropKit.useless(…)将缓存的内容进行清除。

4、Controller

    1)Controller 是 JFinal 核心类之一, 该类作为 MVC 模式中的控制器。 基于 JFinal 的 Web 应用的控制器需要继承该类。 Controller 是定义 Action 方法的地点,是组织 Action 的一种方式,一个 Controller 可以包含多个 Action。 Controller 是线程安全的。

    2)在 Controller 之中定义的 public 方法称为 Action。 Action 是请求的最小单位。 Action 方法必须在 Controller 中定义, 且必须是 public 可见性。Action 可以有返回值,返回值可在拦截器中通过 invocation.getReturnValue() 获取到,以便进行 render 控制。

    3)Controller提供了 getPara系列方法用来从请求中获取参数。getPara系列方法分为两种类型。第 一 种 类 型 为 第 一 个 形 参 为 String 的 getPara 系 列 方 法 。 该 系 列 方 法 是 对HttpServletRequest.getParameter(String name) 的 封 装 , 这 类 方 法 都 是 转 调 了HttpServletRequest.getParameter(String name)。 第二种类型为第一个形参为 int 或无形参的getPara 系列方法。 该系列方法是去获取 urlPara 中所带的参数值。 getParaMap 与 getParaNames分别对应 HttpServletRequest 的 getParameterMap 与 getParameterNames。

    4)getModel 用来接收页面表单域传递过来的 model 对象 ,getModel 使用的 attrName 必须与数据表字段名完全一样。getBean 方法用于支持传统 Java Bean, 包括支持使用 jfnal 生成器生成了 getter、 setter 方法的 Model, 页面表单传参时使用与 setter 方法相一致的 attrName,而非数据表字段名。 getModel 与 getBean 区别在于前者使用数表字段名而后者使用setter 方法一致的属性名进行数据注入。 建议优先使用 getBean 方法。

  • 9
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值