lets-blade /blade
:rocket: Lightning fast and elegant mvc framework for Java8
★ 5,870⑂ 1,151👁 278⑃ 202● 261▤ 9
5,870
stars
+0+1+3
1,151
forks
278
watchers
202
prs
261
issues
9
releases
–
discussions
README
基于 Java8 + Netty4 创造的轻量级、高性能、简洁优雅的Web框架 😋
花 1小时 学会它做点有趣的项目,一款除了 Spring 系框架的不二之选。
🐾 快速开始 |
🌚 官方文档 |
💰 捐赠我们 |
🌾 English
Blade是什么?
Blade 是一款追求简约、高效的 Web 框架,让 JavaWeb 开发如虎添翼,在性能与灵活性上同时兼顾。
如果你喜欢尝试有趣的事物,相信你会爱上它。
如果觉得这个项目不错可以 star 支持或者 捐赠 它 :blush:
功能特性
[x] 新一代MVC框架,不依赖更多的库
[x] 摆脱SSH的臃肿,模块化设计
[x] 源码不到 500kb,学习也简单
[x] Restful风格路由设计
[x] 模板引擎支持,视图开发更灵活
[x] 高性能,100 并发下qps 20w/s
[x] 运行 JAR 包即可开启 web 服务
[x] 支持 CSRF 和 XSS 防御
[x] 支持 BasicAuth 和权限管理
[x] 流式API风格
[x] 支持插件扩展
[x] 支持 webjars 资源
[x] cron 表达式的定时任务
[x] 内置多种常用中间件
[x] 内置JSON输出
[x] JDK8+
框架概述
» 简洁的:框架设计简单,容易理解,不依赖于更多第三方库。Blade框架目标让用户在一天内理解并使用。
» 优雅的:Blade 支持 REST 风格路由接口, 提供 DSL 语法编写,无侵入式的拦截器。
» 易部署:支持 maven 打成 jar 包直接运行。
快速入门
Maven 配置:
创建一个基础的 Maven 工程
xml
com.hellokaton
blade-core
2.1.2.RELEASE
不需要创建 webapp 项目骨架, Blade 没这么麻烦。
或者 Gradle:
sh
compile 'com.hellokaton:blade-core:2.1.2.RELEASE'
编写 main 函数写一个 Hello World:
java
public static void main(String[] args) {
Blade.create().get("/", ctx - ctx.text("Hello Blade")).start();
}
用浏览器打开 http://localhost:9000 这样就可以看到第一个 Blade 应用了!
Contents
- 注册路由
- 硬编码方式
- 控制器方式
- 请求参数
- URL参数
- 表单参数
- Restful参数
- Body参数
- 参数转为对象
- 获取环境配置
- 获取Header
- 获取Cookie
- 静态资源
- 上传文件
- 下载文件
- 设置会话
- 渲染到浏览器
- 渲染JSON
- 渲染文本
- 渲染Html
- 模板渲染
- 默认模板
- Jetbrick模板
- 重定向
- 写入Cookie
- 路由拦截
- 日志输出
- Basic认证
- 修改服务端口
- 配置SSL
- 自定义异常处理
注册路由
硬编码方式
java
public static void main(String[] args) {
// 使用 Blade 实例创建多种路由 GET、POST、PUT、DELETE
Blade.create()
.get("/user/21", getting)
.post("/save", posting)
.delete("/remove", deleting)
.put("/putValue", putting)
.start();
}
控制器方式
java
@Path
public class IndexController {
@GET("/login")
public String login(){
return "login.html";
}
@POST(value = "/login", responseType = ResponseType.JSON)
public RestResponse doLogin(RouteContext ctx){
// do something
return RestResponse.ok();
}
}
请求参数
URL参数
下面是个例子:
使用 RouteContext 获取
java
public static void main(String[] args) {
Blade.create().get("/user", ctx - {
Integer age = ctx.queryInt("age");
System.out.println("age is:" + age);
}).start();
}
使用 @Query 注解获取
java
@GET("/user")
public void savePerson(@Query Integer age){
System.out.println("age is:" + age);
}
在命令行下发送数据测试
bash
curl -X GET http://127.0.0.1:9000/user?age=25
表单参数
下面是个例子:
使用 RouteContext 获取
java
public static void main(String[] args) {
Blade.create().get("/user", ctx - {
Integer age = ctx.fromInt("age");
System.out.println("age is:" + age);
}).start();
}
使用 @Form 注解获取
java
@POST("/save")
public void savePerson(@Form String username, @Form Integer age){
System.out.println("username is:" + username + ", age is:" + age);
}
在终端下发送数据测试
bash
curl -X POST http://127.0.0.1:9000/save -F username=jack -F age=16
Restful 参数
使用 RouteC