文章目录
- 概述
- 官网
- Hserver的理念
- 特点
- 原理图
- 代码案例
- HelloWorld
概述
HServer是一个基于Netty开发网络扩展库.使用插件方式来扩展我们的业务 HServer提供 web,gateway,rpc 等插件 同时用户也可以自定义插件,来完成各种各样的业务场景。
官网
https://gitee.com/HServer/HServer
https://doc.hserver.top/#/
https://gitee.com/HServer
Hserver的理念
-
极简、高性能、扩展强
-
极简 代码只有几百KB
-
高性能 使用Netty网络库作为核心,比起传统的web容器性能高数十倍.
-
扩展强 预留了丰富的接口,以及netty直接自定义协议
特点
- 简便易用5分钟即可掌握使用
- 快速构建高效API
- TCP层上直接构建
- Restful风格路由设计
- Cron定时器
- Filter拦截器
- 持久Queue队列
- HOOK/AOP组件
- Track链路跟踪组件
- Web Socket功能
- Mqtt WebSocketMqtt功能
- 自定义协议
- Proxy 自由处理
- ApiDoc文档组件
- 权限组件
- Plugin组件自由扩展
- HUM消息
- 高性能
- 高度自由度控制
- 流量整形
- Netty 原生响应支持自己扩展
原理图
代码案例
HelloWorld
建立一个maven项目,导入依赖
<parent><artifactId>hserver-parent</artifactId><groupId>cn.hserver</groupId><version>最新版本</version>
</parent><dependencies>
<!-- 核心依赖--><dependency><artifactId>hserver</artifactId><groupId>cn.hserver</groupId></dependency>
<!-- web框架 --><dependency><artifactId>hserver-plugin-web</artifactId><groupId>cn.hserver</groupId></dependency>
</dependencies>
<!-- 打包jar -->
<build><plugins><plugin><artifactId>hserver-plugin-maven</artifactId><groupId>cn.hserver</groupId></plugin></plugins>
</build>
建立一个主函数
建立一个java包,如 com.test , 建立一个主函数
@HServerBoot
public class WebApp {public static void main(String[] args) {HServerApplication.run(WebApp.class, 8888, args);}
}
建立一个控制器
@Controller
public class HelloController {@GET("/test1")public JsonResult test() {return JsonResult.ok();}@POST("/test2")public JsonResult b(HttpRequest request) {return JsonResult.ok().put("data", request.getRequestParams());}@RequestMapping(value = "/get", method = RequestMethod.GET)public JsonResult get() {return JsonResult.ok();}@RequestMapping(value = "/post", method = RequestMethod.POST)public JsonResult post(HttpRequest httpRequest) {return JsonResult.ok().put("data", httpRequest.getRequestParams());}/*** 模板测试* @param httpResponse*/@GET("/template")public void template(HttpResponse httpResponse) {User user = new User();user.setAge(20);user.setName("xx");user.setSex("男");Map<String, Object> obj = new HashMap<>();obj.put("user", user);
// httpResponse.sendTemplate("/admin/user/list.ftl", obj);httpResponse.sendTemplate("a.ftl", obj);}
}
运行主函数,访问8888端口即可