JFinal使用

下面主要介绍JFinal的最简单的配置,包括路由映射,数据库配置和操作,返回结果。

1.在web.xml中做如下配置:

<filter>
    <filter-name>jfinal</filter-name>
    <filter-class>com.jfinal.core.JFinalFilter</filter-class>
    <init-param>
        <param-name>configClass</param-name>
        <param-value>com.xxh.demo.DemoConfig</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>jfinal</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

2.新建配置文件DemoConfig,其实这里主要注意的是数据库的配置即可,虽然路由也可以在这里配置,但是一般都使用注解了。

public class DemoConfig extends JFinalConfig {

    @Override
    public void configConstant(Constants constants) {
        constants.setDevMode(true);
    }

    @Override
    public void configRoute(Routes routes) {

        routes.add("/hello", HelloController.class);
        routes.add("/blog", BlogController.class);
    }

    @Override
    public void configEngine(Engine engine) {
//        engine.addSharedFunction("/_view/common/__layout.html");
//        engine.addSharedFunction("/_view/common/_paginate.html");
//        engine.addSharedFunction("/_view/common/__admin_layout.html");
    }

    @Override
    public void configPlugin(Plugins plugins) {
        loadPropertyFile("config.properties");
        System.out.println(getProperty("jdbcUrl") + "..." + getProperty("username") + "..." + getProperty("password"));
        C3p0Plugin cp = new C3p0Plugin(getProperty("jdbcUrl")
                , getProperty("username"), getProperty("password"));

        plugins.add(cp);

        ActiveRecordPlugin arp = new ActiveRecordPlugin(cp);
        plugins.add(arp);

        /**
         * 必须加上这个配置,否则getModel的时候会抛出如下异常
         * com.jfinal.plugin.activerecord.ActiveRecordException:
         * The Table mapping of model:
         * com.xxh.bean.Blog not exists or the ActiveRecordPlugin not start.
         */
        arp.addMapping("blog", Blog.class);

    }

    @Override
    public void configInterceptor(Interceptors interceptors) {

    }

    @Override
    public void configHandler(Handlers handlers) {

    }
}

3.注解路由配置和最简单的返回文本数据和页面

public class HelloController extends Controller {

    public void index() {
        renderText("Hello Jfinal world");
    }

    @ActionKey("/login")
    public void login() {
        renderText("login");
    }

    @ActionKey("/testRender")
    public void testRender() {
        render("testRender.html");
    }

}

4.对于数据库的操作过程如下:

定义Java Bean

public class Blog extends Model {

public static final Blog me = new Blog();

}

执行数据库的增删查改

下面方法中,返回json数据使用的是renderJson()方法,添加的时候需要new对象,其他使用静态公共对象

public class BlogController extends Controller {
    @ActionKey("/insertTest")
    public void insertTest() {
        Blog blog = new Blog();
        blog.set("title", "xxh").set("content", "hjee").save();
        renderJson(blog.toJson());
    }

    @ActionKey("/deleteTest")
    public void deleteTest() {
        boolean flag = Blog.me.deleteById(1);
        renderText(flag+"");
    }

    @ActionKey("/updateTest")
    public void updateTest() {
        boolean flag = Blog.me.findByIdLoadColumns(2, "id,title,content").set("title", "gggg").update();
        renderText(flag+"");
    }

    @ActionKey("/selectTest")
    public void selectTest() {
        List<Blog> blog = Blog.me.find("select * from blog");
        for (Blog b : blog) {
            System.out.println(b.getInt("userId"));
        }

        renderJson(blog);
    }

    @ActionKey("/save")
    public void save() {
        String title = getPara("title");
        String content = getPara("content");
        System.out.println(title + "...." + content);

        Blog blog = getModel(Blog.class, "");

        System.out.println(blog.toJson());

//        renderText(blog.toString() + "----" + title + "...." + content);
        renderJson(blog.toJson());
    }

    @Before(LoginValidator.class)
    @ActionKey("/testLogin")
    public void testLogin() {
        renderText("testLogin");
    }
}

上面代码还设计了一个验证器的东西,其实就是拦截器,用来验证字段的规则,不符合做相应的跳转之类的,定义如下:

public class LoginValidator extends Validator {
    @Override
    protected void validate(Controller controller) {
        validateRequiredString("name", "nameMsg", "请输入用户名");
        validateRequiredString("pass", "passMsg", "请输入密码");
    }

    @Override
    protected void handleError(Controller controller) {
        controller.keepPara("name");
        controller.render("login.html");
    }
}
  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值