我负责的项目都是Jfinal的了,有必要写一些学习知识,记录下来。

1、PropKit.use("config.txt", "UTF-8");

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);
}
}

2、Tx 事务拦截器

以下为事务处理示例:

boolean succeed = Db.tx(new IAtom(){
public boolean run() throws SQLException {
int count = Db.update("update account set cash = cash - ? where
id = ?", 100, 123);
int count2 = Db.update("update account set cash = cash + ? where
id = ?", 100, 456);
return count == 1 && count2 == 1;
}});
}

以上两次数据库更新操作在一个事务中执行,如果执行过程中发生异常或者 invoke()方法
返回 false,则自动回滚事务。

3、Jfinal基本配置代码

/**
* API引导式配置
*/
public class CommonConfig extends JFinalConfig { public static Properties p; /**
* 配置常量
*/
@Override
public void configConstant(Constants me) {
p = loadPropertyFile("project.txt"); // 加载少量必要配置,随后可用getProperty(...)获取值
me.setDevMode(getPropertyToBoolean("devMode", false));
me.setBaseViewPath("/WEB-INF/jsp/");
me.setViewType(ViewType.JSP); // 设置视图类型为Jsp,否则默认为FreeMarker //me.setError404View("/error/error_404.html");
//me.setError500View("/error/error_500.html");
} /**
* 配置路由
*/
@Override
public void configRoute(Routes me) {
AutoBindRoutes auto = new AutoBindRoutes();
me.add(auto);
} /**
* 配置插件
*/
@Override
public void configPlugin(Plugins me) {
/**
* // 配置C3p0数据库连接池插件 C3p0Plugin c3p0Plugin = new
* C3p0Plugin(getProperty("jdbcUrl"), getProperty("user"),
* getProperty("password").trim()); me.add(c3p0Plugin);
*
* // 配置ActiveRecord插件 ActiveRecordPlugin arp = new
* ActiveRecordPlugin(c3p0Plugin); me.add(arp); arp.addMapping("blog",
* Blog.class); // 映射blog 表到 Blog模型
*/ DruidPlugin druidPlugin = new DruidPlugin(getProperty("jdbcUrl"), getProperty("user"), getProperty("password"), getProperty("driverClass"));
druidPlugin.setValidationQuery("select 1 from dual");
druidPlugin.setTestOnBorrow(true);
druidPlugin.setFilters("stat");
me.add(druidPlugin);
AutoTableBindPlugin arp = new AutoTableBindPlugin(druidPlugin, SimpleNameStyles.UP_UNDERLINE); // arp.setDialect(new MysqlDialect()); //mysql的方言配置
arp.setDialect(new OracleDialect());
arp.setContainerFactory(new CaseInsensitiveContainerFactory());
arp.setShowSql(true);//输出sql
me.add(arp); QuartzPlugin quartzPlugin = new QuartzPlugin("job.properties");
me.add(quartzPlugin);
} /**
* 配置全局拦截器
*/
@Override
public void configInterceptor(Interceptors me) {
me.add(new TxByRegex("save;delete;submit;update"));
me.add(new AuthInterceptor());
//me.add(new ExceptionInterceptor());
} /**
* 配置处理器
*/
@Override
public void configHandler(Handlers me) {
me.add(new UrlSkipHandler("/hessian.*", false));
me.add(new BaseUrlHandler());
me.add(new ContextPathHandler("contextpath"));
me.add(new DruidStatViewHandler("/druid"));
} /**
* 建议使用 JFinal 手册推荐的方式启动项目 运行此 main
* 方法可以启动项目,此main方法可以放置在任意的Class类定义中,不一定要放于此
*/
public static void main(String[] args) {
JFinal.start("WebRoot", 80, "/", 5);
}
}

/**
* 配置常量
*/
@Override
public void configConstant(Constants me) {
p = loadPropertyFile("project.txt"); // 加载少量必要配置,随后可用getProperty(...)获取值
me.setDevMode(getPropertyToBoolean("devMode", false));
me.setBaseViewPath("/WEB-INF/jsp/");
me.setViewType(ViewType.JSP); // 设置视图类型为Jsp,否则默认为FreeMarker
}

  数据库配置信息都这

/WEB-INF/jsp/project.txt 里了。

Jfinal基础学习(一)的更多相关文章

  1. salesforce 零基础学习(五十二)Trigger使用篇(二)

    第十七篇的Trigger用法为通过Handler方式实现Trigger的封装,此种好处是一个Handler对应一个sObject,使本该在Trigger中写的代码分到Handler中,代码更加清晰. ...

  2. 如何从零基础学习VR

    转载请声明转载地址:http://www.cnblogs.com/Rodolfo/,违者必究. 近期很多搞技术的朋友问我,如何步入VR的圈子?如何从零基础系统性的学习VR技术? 本人将于2017年1月 ...

  3. IOS基础学习-2: UIButton

    IOS基础学习-2: UIButton   UIButton是一个标准的UIControl控件,UIKit提供了一组控件:UISwitch开关.UIButton按钮.UISegmentedContro ...

  4. HTML5零基础学习Web前端需要知道哪些?

    HTML零基础学习Web前端网页制作,首先是要掌握一些常用标签的使用和他们的各个属性,常用的标签我总结了一下有以下这些: html:页面的根元素. head:页面的头部标签,是所有头部元素的容器. b ...

  5. python入门到精通[三]:基础学习(2)

    摘要:Python基础学习:列表.元组.字典.函数.序列化.正则.模块. 上一节学习了字符串.流程控制.文件及目录操作,这节介绍下列表.元组.字典.函数.序列化.正则.模块. 1.列表 python中 ...

  6. python入门到精通[二]:基础学习(1)

    摘要:Python基础学习: 注释.字符串操作.用户交互.流程控制.导入模块.文件操作.目录操作. 上一节讲了分别在windows下和linux下的环境配置,这节以linux为例学习基本语法.代码部分 ...

  7. CSS零基础学习笔记.

    酸菜记 之 CSS的零基础. 这篇是我自己从零基础学习CSS的笔记加理解总结归纳的,如有不对的地方,请留言指教, 学前了解: CSS中字母是不分大小写的; CSS文件可以使用在各种程序文件中(如:PH ...

  8. Yaf零基础学习总结5-Yaf类的自动加载

    Yaf零基础学习总结5-Yaf类的自动加载 框架的一个重要功能就是类的自动加载了,在第一个demo的时候我们就约定自己的项目的目录结构,框架就基于这个目录结构来自动加载需要的类文件. Yaf在自启动的 ...

  9. Yaf零基础学习总结4-Yaf的配置文件

    在上一节的hello yaf当中我们已经接触过了yaf的配置文件了, Yaf和用户共用一个配置空间, 也就是在Yaf_Application初始化时刻给出的配置文件中的配置. 作为区别, Yaf的配置 ...

随机推荐

  1. C#_控件——CheckBox,TextBox,RequiredFieldValidator

    1. <asp:CheckBox ID="CheckBox2" runat="server" Text="你大爷" AutoPostB ...

  2. 如何编写一个编译c#控制台应用程序的批处理程序

    如何编写一个编译c#控制台应用程序的批处理程序 2011-03-22 18:14 dc毒蘑菇 | 浏览 579 次 最近在网上看了一个教程,是学C#的,但是我的机子上装不上vs,所以想写一个批处理来编 ...

  3. 《JS高程》基本类型和引用类型的值学习笔记

    ECMAScript 变量可能包含两种不同数据类型的值:基本类型值和引用类型值. 创建方式类似:创建一个变量并为其赋值. (1)基本类型值和引用类型值比较 基本类型值 引用类型值 简单的数据段 可能由 ...

  4. 【ajax】FormData

  5. css 包含的图片和style="display:none"可以避免图片加载,可以节省网络流量

    从别人那儿学到一招:先记录下来: <head> <meta charset="UTF-8"> <title>Document</title ...

  6. ODBC接口规范

    第1章     ODBC API基础 1.1 ODBC API句柄 ODBC API 实现数据库操作的手段是句柄.在ODBC中,使用不同的句柄(HANDLE)来标志环境(environment).连接 ...

  7. ucsc工具集合

    wget http://hgdownload.cse.ucsc.edu/admin/jksrc.zip 解压后所有工具在kent目录里 发现个更方便的.... http://hgdownload.cs ...

  8. PHP生成图片验证码(simple)

      php新手,写了一个web登录界面,除了用户名,密码,感觉有个验证码会比较cool一点,便根据参考书的简单介绍,写了一个image.php来生成简单的图片验证码,颇有感慨,分享一下. 1. 图片验 ...

  9. SecureCrt 利用公匙登录L机取消密码登录。

    原理自不用多说了. 用SecureCRT生成一个公匙.密匙 把公匙传到多个L机上,然后就可以利用同一个私匙登录多个L机了. 密码都不用换.多轻松好使. SecureCRT-Tools-Create P ...

  10. Brainstorm in one sentence

    [1]佚名|台湾学生占领立法院 人會長大三次 第一次是發現世界不是為自己而轉的時候. 第二次是在發現即使再怎麼努力,終究還是有些事令人無能為力的時候. 第三次是在,明知道有些事可能會無能為力,但還是會 ...