Java轻量级MVC框架:Blade
jopen
9年前
Blade是什么?
Blade 是一个轻量级的MVC框架. 它拥有简洁的代码,优雅的设计。如果你喜欢,欢迎 Star and Fork, 谢谢!
特性
- 轻量级。代码简洁,结构清晰,更容易开发
- 模块化(你可以选择使用哪些组件)
- 插件扩展机制
- Restful风格的路由接口
- 多种配置文件支持(当前支持properties、json和硬编码)
- 内置Jetty服务,模板引擎支持
- 支持JDK1.6或者更高版本
概述
- 简洁的:框架设计简单,容易理解,不依赖于更多第三方库。Blade框架目标让用户在一天内理解并使用。
- 优雅的:blade支持 REST 风格路由接口, 提供 DSL 语法编写,无侵入式的拦截器。
快速入门
开始之前,首先 引入Blade的库文件 :
Maven配置:
<dependency> <groupId>com.bladejava</groupId> <artifactId>blade-core</artifactId> <version>1.5.0</version> </dependency> <dependency> <groupId>com.bladejava</groupId> <artifactId>blade-startup</artifactId> <version>1.0.1</version> </dependency>
编写Main函数:
public static void main(String[] args) { Blade blade = Blade.me(); blade.get("/", (request, response) -> { response.html("<h1>Hello blade!</h1>"); }); blade.listen(9001).start(); }
用浏览器打开 http://localhost:9001 这样就可以看到第一个Blade应用了!
API示例
public static void main(String[] args) { Blade blade = Blade.me(); blade.get("/user/21", getxxx); blade.post("/save", postxxx); blade.delete("/del/21", deletexxx); blade.put("/put", putxxx); blade.listen(9001).start(); }
REST URL参数获取
public static void main(String[] args) { Blade blade = Blade.me(); blade.get("/user/:uid", (request, response) -> { Integer uid = request.paramAsInt("uid"); response.text("uid : " + uid); }); blade.get("/users/:uid/post/:pid", (request, response) -> { Integer uid = request.paramAsInt("uid"); Integer pid = request.paramAsInt("pid"); String msg = "uid = " + uid + ", pid = " + pid; response.text(msg); }); blade.listen(9001).start(); }
Form URL参数获取
public static void main(String[] args) { Blade blade = Blade.me(); blade.get("/user", (request, response) -> { Integer uid = request.queryAsInt("uid"); response.text("uid : " + uid); }); blade.listen(9001).start(); }
上传文件
public void upload_img(Request request, Response response){ JsonObject jsonObject = new JsonObject(); FileItem[] fileItems = request.files(); if(null != fileItems && fileItems.length > 0){ FileItem fileItem = fileItems[0]; File file = fileItem.getFile(); String fileRealPath = "your upload file path!"; nioTransferCopy(file, fileRealPath); } }
配置文件路由
route.conf GET / IndexRoute.home GET /signin IndexRoute.show_signin POST /signin IndexRoute.signin GET /signout IndexRoute.signout POST /upload_img UploadRoute.upload_img
路由拦截
public static void main(String[] args) { Blade blade = Blade.me(); blade.before("/.*", (request, response) -> { System.out.println("before..."); }); blade.listen(9001).start(); }
DSL数据库操作
// 保存操作 public boolean save(Integer cid, Integer tid, Integer fuid, Integer tuid) { return model.insert().param("cid", cid) .param("tid", tid) .param("fuid", fuid) .param("tuid", tuid) .param("addtime", new Date()) .param("ntype", 0).executeAndCommit() > 0; } // 登录操作 public User signin(String username, String password) { String pwd = EncrypKit.md5(username + password); return model.select().eq("username", username) .eq("password", pwd).fetchOne(); } // 查询条数 public Long getUserCount(String email){ return model.count().eq("email", email).fetchCount(); }
OK,这一切看起来多么的简单,查阅使用指南更多现成的例子供你参考:
计划
- 1. 编写英文文档
- 2. 添加测试代码
- 3. 优化基础代码
- 4. 优化并发能力
项目主页:http://www.open-open.com/lib/view/home/1450792639933