jodd大量的工具类,基本上包揽了开发web项目中的使用,然后由于它的轻巧,总共大小不足1.5M,让我更加的喜欢。

http://jodd.org/

下面说说我折腾的结果

构建web项目直接使用大神整理好的一个依赖就可以了 jodd-joy

http://joddframework.org/

Madvoc(mvc): http://jodd.org/doc/madvoc/

路由

命名规则:

后缀都以Action结尾,比如 IndexAction

Rest 路由 /demo/${id}

// 接收参数
@In
// 输出对象
@Out
// 可接收可输出
@InOut

// @In 可以写在方法参数里,@Out 强烈建议直接写在Action里,不要写在方法参数里

// example
@Out String bookName;
@Action(value = "/book/${id}")
@InterceptedBy({
        EchoInterceptor.class,
        ServletConfigInterceptor.class
})
public String book(@In Long id) {
    System.out.println(id);
    bookName = "Java";
    return "#book";
}

返回视图:

目前只看到JSP,freemarker,velocity等在官网文档里没看到身影!!!

不过值得高兴的是,jodd封装了一套JSP的标签 http://jodd.org/doc/taglibrary.html

拦截器

// 直接使用注解 @InterceptedBy

这里有个坑,就是如果使用了拦截器,不管是自定义的,还是官方提供的,想使用@In, @Out 必须要在拦截器后面在添加一个拦截器 ServletConfigInterceptor

详见: https://github.com/oblac/jodd/issues/318

Db 数据查询模板SQL

jodd-joy 的demo里提供了三个数据库操作方法

@Transaction
public List<Message> findLastMessagesWithResponses(int count) {
	DbSqlBuilder dbsql = sql(
			"select $C{m.*}, $C{m.responses:r.*} " +
			"from $T{Message m} " +
			"left join $T{Response r} using ($.id) " +
			"order by $m.id desc limit :count");

	DbOomQuery dbquery = query(dbsql);
	dbquery.entityAwareMode(true);
	dbquery.setInteger("count", count);

	return dbquery.list(Message.class, Response.class);
}

其中有 $T $C $M $ 都是啥意思呢,详见: http://jodd.org/doc/db/template-sql.html


最后说一下, jodd-joy 的目录结构貌似不能动

image

原文链接: https://chenyongze.github.io/2017/03/23/jodd-web/