SEARU.ORG
当前位置:SEARU.ORG > Linux 软件 > 正文

Java 的轻量 Web 开发库 TinyWeb

TinyWeb

TinyWeb是一个Java轻量的web开发库,目前这个包的体积只有49K,支持的功能如下:

1. Action路由注解

tinyweb提供一个基于注解的路由解析,使用起来非常简单方便,下面会有例子。

2. Log日志

tinyweb提供一简单的log系统,不需要任何第三方日志包即可完成log功能(但目前还不支持日志输入文件)

3. Json

使用tinyweb你可以很方便的使用内置的json工具向前台返回json格式数据

4. DBTool

DBTool是一个简单方便的数据库工具,使用它你可以方便的从数据库查询数据,结果可以使用Map也可以使用Bean。但是DBTool只是个对JDBC的基本封装,所以所有的SQL都要自己手写,使用的时候也要注意。使用起来非常简单,只需要配置好properties文件然后单用DBTool.getInstance()你就可以使用啦。

5. IOC

tinyweb内部有一个IOC容器用来支持tinyweb的注解。IOC的使用也很简单。

6. 插件

你可以自己开发插件来处理来自客户端的请求,比如可与过滤静态文件、做权限认证……

7. 上传文件

不需要第三方库,实现文件上传

8. 验证码

tinyweb内置了一个验证码生成类(VerificationCode),用起来十分简单

 

目前就实现了这些功能,后面还会陆续完善,后续计划如下:

1. AOP

一个简单的AOP功能

2. 视图渲染接口

目前可以使用jsp来渲染视图,暴露视图渲染接口可以用其他的视图渲染引擎来渲染,比如velocity、freemaker

例子:

先写一个启动类(也可以不写):

/**
 * 1. [email protected]
 * 2. 必须要有一个公有的名字为go且无参数的方法
 * 如下
 */
@Start
public class StartApp {
    public void go() {
        System.out.println();
        System.out.println("* * * * * * * * TinyWeb 启动 * * * * * * * ");
        System.out.println();
        // 日志配置
        Global.logLevel = 2;
        // 静态资源
        Global.statics += "";
        // 配置插件
        PluginManager.add(new StaticPlugin());
        PluginManager.add(new ParamPlugin());
    }
}

写个Service类用来注入到Action中:

/**
 * Created by larry on 16/12/15.
 * @author larry
 * [email protected][email protected]
 */
@TA
public class ArticleServiceImpl implements ArticleService {
    private DBTool dbTool = DBTool.getInstant();
    @Override
    public Integer insertArticle(Article article) {
        String sql = "";
        return dbTool.insertInto(sql);
    }
}

然后写一个Action类型:

/**
 * [email protected]("action-path")注解
 * [email protected]("method-path")
 * 比如下面的配置,访问http://host:port/project/article/publish就可以发布博客了
 * [email protected],然后为其写setter方法(必须要写setter方法)
 */
@RM("/article/")
public class ArticleAction {
    @Autowired
    private ArticleService articleService;
    @Autowired
    private CategoryService categoryService;
    @RM("publish")
    public void publish(RequestEntity requestEntity) {
        // ....
        // 客户端跳转
        requestEntity.redirect("/admin/publish.jsp");
    }
    @RM("edit")
    public void edit(RequestEntity requestEntity) {
        Integer id = Integer.parseInt(requestEntity.getParam("id"));
        Article article = articleService.getArticleByID(id);
        requestEntity.setAttr("article", article);
        requestEntity.setAttr("categories", categoryService.list());
        // 服务器内部跳转
        requestEntity.forward("/admin/publish.jsp");
    }
    @RM("see")
    public void see(RequestEntity requestEntity) {
        Integer id = Integer.parseInt(requestEntity.getParam("id"));
        Article article = articleService.getArticleByID(id);
        requestEntity.setAttr("article", article);
        requestEntity.forward("/front/article.jsp");
    }
    public void setArticleService(ArticleService articleService) {
        this.articleService = articleService;
    }
    public void setCategoryService(CategoryService categoryService) {
        this.categoryService = categoryService;
    }
}

就这么简单

我自己用这个tinyweb写了一个博客,传送门:TinyBlog

目前这个博客还没完全写完,源码也在osgit上有兴趣的可以看一下:TinyBlog源码

tinyweb的目标是做一个非常精简web开发库,不需要任何第三方依赖,实现web开发。

————————————————————————

————————————————————————

未经允许不得转载:SEARU.ORG » Java 的轻量 Web 开发库 TinyWeb

赞 (0)
分享到:更多 ()

评论 0