lets-blade /blade

:rocket: Lightning fast and elegant mvc framework for Java8

★ 5,870⑂ 1,151👁 278⑃ 202● 261▤ 9
JavaCreated 2015-06-10lets-blade.github.io
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

Snapshot: 2026-11-04T14:00:00Z · Data license Apache-2.0 · JSON