diff --git a/frameworks/Java/tio-http-server/.dockerignore b/frameworks/Java/tio-http-server/.dockerignore
new file mode 100644
index 00000000000..cba5dfe3c3b
--- /dev/null
+++ b/frameworks/Java/tio-http-server/.dockerignore
@@ -0,0 +1,19 @@
+.github
+.git
+.DS_Store
+docs
+kubernetes
+node_modules
+/.svelte-kit
+/package
+.env
+.env.*
+vite.config.js.timestamp-*
+vite.config.ts.timestamp-*
+__pycache__
+.env
+_old
+uploads
+.ipynb_checkpoints
+**/*.db
+_test
\ No newline at end of file
diff --git a/frameworks/Java/tio-http-server/.gitignore b/frameworks/Java/tio-http-server/.gitignore
new file mode 100644
index 00000000000..2f089945614
--- /dev/null
+++ b/frameworks/Java/tio-http-server/.gitignore
@@ -0,0 +1,3 @@
+/target/
+logs
+.settings
\ No newline at end of file
diff --git a/frameworks/Java/tio-http-server/README.md b/frameworks/Java/tio-http-server/README.md
new file mode 100644
index 00000000000..bb1539e7db1
--- /dev/null
+++ b/frameworks/Java/tio-http-server/README.md
@@ -0,0 +1,114 @@
+# t-io Benchmarking Test
+
+This is the tio-server portion of a [benchmarking test suite](../) comparing a variety of web development platforms.
+
+## Controller
+
+These implementations use the tio-server's controller.
+
+### Plaintext Test
+
+* [Plaintext test source](src/main/java/com/litongjava/tio/http/server/controller/IndexController.java)
+
+### JSON Serialization Test
+
+* [JSON test source](src/main/java/com/litongjava/tio/http/server/controller/IndexController.java)
+
+### Database Query Test
+
+* [Database Query test source](src/main/java/com/litongjava/tio/http/server/controller/DbController.java))
+
+### Database Queries Test
+
+* [Database Queries test source](src/main/java/com/litongjava/tio/http/server/controller/DbController.java))
+
+### Database Update Test
+
+* [Database Update test source](src/main/java/com/litongjava/tio/http/server/controller/DbController.java))
+
+### Template rendering Test
+
+* [Template rendering test source](src/main/java/com/litongjava/tio/http/server/controller/DbController.java))
+
+### Cache Query Test
+* [Cache query test source](src/main/java/com/litongjava/tio/http/server/controller/CacheController.java))
+
+
+## Versions
+3.7.3.v20231218-RELEASE (https://gitee.com/litongjava/t-io)
+
+## Test URLs
+
+All implementations use the same URLs.
+
+### Plaintext Test
+
+ http://localhost:8080/plaintext
+
+### JSON Encoding Test
+
+ http://localhost:8080/json
+
+### Database Query Test
+
+ http://localhost:8080/db
+
+### Database Queries Test
+
+ http://localhost:8080/queries?queries=5
+
+### Cache Query Test
+
+ http://localhost:8080/cacheQuery?queries=10000
+
+### Template rendering Test
+
+ http://localhost:8080/fortunes
+
+### Database Update Test
+
+ http://localhost:8080/updates?queries=5
+
+ ## Hot to run
+ ### install mysql 8
+ - 1.please instal mysql 8.0.32,example cmd
+ ```
+ docker run --restart=always -d --name mysql_8 --hostname mysql \
+-p 3306:3306 \
+-e 'MYSQL_ROOT_PASSWORD=robot_123456#' -e 'MYSQL_ROOT_HOST=%' -e 'MYSQL_DATABASE=hello_world' \
+mysql/mysql-server:8.0.32 \
+--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --lower_case_table_names=1
+ ```
+ - 2.create database schema hello_world
+ - 3.create tablle,[example](sql/hello_world.sql)
+ - 4.import data
+
+ ### docker
+ ```
+ docker build -t tio-server-benchmark -f tio-server.dockerfile .
+```
+The run is to specify the mysql database
+```
+docker run --rm -p 8080:8080 \
+-e JDBC_URL="jdbc:mysql://192.168.3.9/hello_world" \
+-e JDBC_USER="root" \
+-e JDBC_PSWD="robot_123456#" \
+tio-server-benchmark
+```
+
+### windows
+
+-windows
+```
+D:\java\jdk1.8.0_121\bin\java -jar target\tio-server-benchmark-1.0.jar --JDBC_URL=jdbc:mysql://192.168.3.9/hello_world?useSSL=false --JDBC_USER=root --JDBC_PSWD=robot_123456#
+```
+or
+```
+set JDBC_URL=jdbc:mysql://192.168.3.9/hello_world
+set jdbc.user=root
+set JDBC_PSWD=robot_123456#
+D:\java\jdk1.8.0_121\bin\java -jar target\tio-server-benchmark-1.0.jar
+```
+
+
+
diff --git a/frameworks/Java/tio-http-server/api/tio-server-benchmark.md b/frameworks/Java/tio-http-server/api/tio-server-benchmark.md
new file mode 100644
index 00000000000..1d302df2d5d
--- /dev/null
+++ b/frameworks/Java/tio-http-server/api/tio-server-benchmark.md
@@ -0,0 +1,227 @@
+---
+title: tio-server-benchmark v1.0.0
+language_tabs:
+ - shell: Shell
+ - http: HTTP
+ - javascript: JavaScript
+ - ruby: Ruby
+ - python: Python
+ - php: PHP
+ - java: Java
+ - go: Go
+toc_footers: []
+includes: []
+search: true
+code_clipboard: true
+highlight_theme: darkula
+headingLevel: 2
+generator: "@tarslib/widdershins v4.0.17"
+
+---
+
+# tio-server-benchmark
+
+> v1.0.0
+
+Base URLs:
+
+# Authentication
+
+# Default
+
+## GET plaintext
+
+GET /plaintext
+
+> 返回示例
+
+> 200 Response
+
+```json
+{}
+```
+
+### 返回结果
+
+|状态码|状态码含义|说明|数据模型|
+|---|---|---|---|
+|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|Inline|
+
+### 返回数据结构
+
+## GET json
+
+GET /json
+
+> 返回示例
+
+> 200 Response
+
+```json
+{}
+```
+
+### 返回结果
+
+|状态码|状态码含义|说明|数据模型|
+|---|---|---|---|
+|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|Inline|
+
+### 返回数据结构
+
+## GET db
+
+GET /db
+
+### 请求参数
+
+|名称|位置|类型|必选|说明|
+|---|---|---|---|---|
+|id|query|string| 否 |none|
+
+> 返回示例
+
+> 200 Response
+
+```json
+{
+ "id": 0,
+ "randomNumber": 0
+}
+```
+
+### 返回结果
+
+|状态码|状态码含义|说明|数据模型|
+|---|---|---|---|
+|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|Inline|
+
+### 返回数据结构
+
+状态码 **200**
+
+|名称|类型|必选|约束|中文名|说明|
+|---|---|---|---|---|---|
+|» id|integer|true|none||none|
+|» randomNumber|integer|true|none||none|
+
+## GET updates
+
+GET /updates
+
+### 请求参数
+
+|名称|位置|类型|必选|说明|
+|---|---|---|---|---|
+|queries|query|string| 否 |none|
+
+> 返回示例
+
+> 成功
+
+```json
+[
+ {
+ "id": 28,
+ "randomNumber": 5399,
+ "randomnumber": 1498
+ }
+]
+```
+
+### 返回结果
+
+|状态码|状态码含义|说明|数据模型|
+|---|---|---|---|
+|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|Inline|
+
+### 返回数据结构
+
+状态码 **200**
+
+|名称|类型|必选|约束|中文名|说明|
+|---|---|---|---|---|---|
+|» id|integer|false|none||none|
+|» randomNumber|integer|false|none||none|
+|» randomnumber|integer|false|none||none|
+
+## GET fortunes
+
+GET /fortunes
+
+> 返回示例
+
+> 200 Response
+
+```json
+{}
+```
+
+### 返回结果
+
+|状态码|状态码含义|说明|数据模型|
+|---|---|---|---|
+|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|Inline|
+
+### 返回数据结构
+
+## GET cacheQuery
+
+GET /cacheQuery
+
+### 请求参数
+
+|名称|位置|类型|必选|说明|
+|---|---|---|---|---|
+|queries|query|string| 否 |none|
+
+> 返回示例
+
+> 200 Response
+
+```json
+[
+ {
+ "id": 0,
+ "randomNumber": 0
+ }
+]
+```
+
+### 返回结果
+
+|状态码|状态码含义|说明|数据模型|
+|---|---|---|---|
+|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|Inline|
+
+### 返回数据结构
+
+状态码 **200**
+
+|名称|类型|必选|约束|中文名|说明|
+|---|---|---|---|---|---|
+|» id|integer|false|none||none|
+|» randomNumber|integer|false|none||none|
+
+## GET cacheList
+
+GET /cacheList
+
+> 返回示例
+
+> 200 Response
+
+```json
+{}
+```
+
+### 返回结果
+
+|状态码|状态码含义|说明|数据模型|
+|---|---|---|---|
+|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|Inline|
+
+### 返回数据结构
+
+# 数据模型
+
diff --git a/frameworks/Java/tio-http-server/benchmark_config.json b/frameworks/Java/tio-http-server/benchmark_config.json
new file mode 100644
index 00000000000..5cd4c92b275
--- /dev/null
+++ b/frameworks/Java/tio-http-server/benchmark_config.json
@@ -0,0 +1,29 @@
+{
+ "framework": "tio-server",
+ "tests": [{
+ "default": {
+ "plaintext_url": "/plaintext",
+ "json_url": "/json",
+ "db_url": "/db",
+ "query_url": "/queries?queries=",
+ "fortune_url": "/fortunes",
+ "update_url": "/updates?queries=",
+ "cached_query_url" : "/cachedQuery?queries=",
+ "port": 8080,
+ "approach": "Realistic",
+ "classification": "Micro",
+ "database": "MySQL",
+ "framework": "tio-server",
+ "language": "Java",
+ "flavor": "None",
+ "orm": "Raw",
+ "platform": "t-io",
+ "webserver": "None",
+ "os": "Linux",
+ "database_os": "Linux",
+ "display_name": "tio-server",
+ "notes": "tio-server",
+ "versus": "t-io"
+ }
+ }]
+}
diff --git a/frameworks/Java/tio-http-server/config.toml b/frameworks/Java/tio-http-server/config.toml
new file mode 100644
index 00000000000..93dddb241c9
--- /dev/null
+++ b/frameworks/Java/tio-http-server/config.toml
@@ -0,0 +1,19 @@
+[framework]
+name = "t-io"
+
+[main]
+urls.plaintext = "/plaintext"
+urls.json = "/json"
+urls.query = "/queries?queries="
+urls.update = "/updates?queries="
+urls.fortune = "/fortunes"
+urls.cached_query = "/cachedQuery?queries="
+approach = "Realistic"
+classification = "Micro"
+database = "None"
+database_os = "Linux"
+os = "Linux"
+orm = "Raw"
+platform = "t-io"
+webserver = "None"
+versus = "t-io"
diff --git a/frameworks/Java/tio-http-server/pom.xml b/frameworks/Java/tio-http-server/pom.xml
new file mode 100644
index 00000000000..60c75e68fd5
--- /dev/null
+++ b/frameworks/Java/tio-http-server/pom.xml
@@ -0,0 +1,209 @@
+
+ 4.0.0
+ com.litongjava
+ tio-http-server-benchmark
+ 1.0
+ ${project.artifactId}
+
+ UTF-8
+ 1.8
+ ${java.version}
+ ${java.version}
+ 23.1.1
+ com.litongjava.tio.http.server.MainApp
+
+
+
+ com.litongjava
+ tio-http-server
+ 3.7.3.v20240919-RELEASE
+
+
+ com.litongjava
+ java-db
+ 1.2.6
+
+
+ junit
+ junit
+ 4.12
+ test
+
+
+
+
+
+
+
+
+ com.alibaba.fastjson2
+ fastjson2
+ 2.0.52
+
+
+
+ net.sf.ehcache
+ ehcache-core
+ 2.6.11
+
+
+
+ mysql
+ mysql-connector-java
+ 5.1.46
+
+
+
+ com.zaxxer
+ HikariCP
+ 4.0.3
+
+
+
+
+
+
+ development
+
+ true
+
+
+
+ ch.qos.logback
+ logback-classic
+ 1.2.3
+
+
+
+
+
+
+ production
+
+
+ ch.qos.logback
+ logback-classic
+ 1.2.3
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.7.4
+
+ ${main.class}
+ org.projectlombok
+
+
+
+
+
+ repackage
+
+
+
+
+
+
+
+
+
+ assembly
+
+
+ ch.qos.logback
+ logback-classic
+ 1.2.3
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+ 3.2.0
+
+
+ org.apache.maven.plugins
+ maven-assembly-plugin
+ 3.1.1
+
+
+
+ ${main.class}
+
+
+
+ jar-with-dependencies
+
+ false
+
+
+
+ make-assembly
+ package
+
+ single
+
+
+
+
+
+
+
+
+ native
+
+
+
+ org.slf4j
+ slf4j-jdk14
+ 1.7.31
+
+
+
+ org.graalvm.sdk
+ graal-sdk
+ ${graalvm.version}
+ provided
+
+
+
+ ${project.artifactId}
+
+
+ org.graalvm.nativeimage
+ native-image-maven-plugin
+ 21.2.0
+
+
+
+ native-image
+
+ package
+
+
+
+ false
+ ${project.artifactId}
+ ${main.class}
+
+ -H:+RemoveSaturatedTypeFlows
+ --allow-incomplete-classpath
+ --no-fallback
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/frameworks/Java/tio-http-server/src/main/java/com/litongjava/tio/http/server/MainApp.java b/frameworks/Java/tio-http-server/src/main/java/com/litongjava/tio/http/server/MainApp.java
new file mode 100644
index 00000000000..43a6bfc5804
--- /dev/null
+++ b/frameworks/Java/tio-http-server/src/main/java/com/litongjava/tio/http/server/MainApp.java
@@ -0,0 +1,66 @@
+package com.litongjava.tio.http.server;
+
+import com.litongjava.tio.http.common.HttpConfig;
+import com.litongjava.tio.http.common.handler.ITioHttpRequestHandler;
+import com.litongjava.tio.http.server.config.EhCachePluginConfig;
+import com.litongjava.tio.http.server.config.EnjoyEngineConfig;
+import com.litongjava.tio.http.server.config.MysqlDbConfig;
+import com.litongjava.tio.http.server.controller.CacheController;
+import com.litongjava.tio.http.server.controller.DbController;
+import com.litongjava.tio.http.server.controller.IndexController;
+import com.litongjava.tio.http.server.handler.DefaultHttpRequestDispatcher;
+import com.litongjava.tio.http.server.router.DefaultHttpReqeustRouter;
+import com.litongjava.tio.http.server.router.HttpRequestRouter;
+import com.litongjava.tio.server.ServerTioConfig;
+import com.litongjava.tio.utils.environment.EnvUtils;
+
+public class MainApp {
+
+ public static void main(String[] args) {
+ long start = System.currentTimeMillis();
+ EnvUtils.load();
+ // add route
+ IndexController controller = new IndexController();
+
+ HttpRequestRouter simpleHttpRoutes = new DefaultHttpReqeustRouter();
+ simpleHttpRoutes.add("/", controller::index);
+ simpleHttpRoutes.add("/plaintext", controller::plaintext);
+ simpleHttpRoutes.add("/json", controller::json);
+
+ DbController dbQueryController = new DbController();
+ simpleHttpRoutes.add("/db", dbQueryController::db);
+ simpleHttpRoutes.add("/queries", dbQueryController::queries);
+ simpleHttpRoutes.add("/updates", dbQueryController::updates);
+ simpleHttpRoutes.add("/fortunes", dbQueryController::fortunes);
+
+ CacheController cacheController = new CacheController();
+ simpleHttpRoutes.add("/cachedQuery", cacheController::cachedQuery);
+
+ // config server
+ HttpConfig httpConfig = new HttpConfig(8080, null, null, null);
+ httpConfig.setUseSession(false);
+ httpConfig.setWelcomeFile(null);
+ httpConfig.setCheckHost(false);
+ httpConfig.setCompatible1_0(false);
+
+ ITioHttpRequestHandler requestHandler = new DefaultHttpRequestDispatcher(httpConfig, simpleHttpRoutes);
+ HttpServerStarter httpServerStarter = new HttpServerStarter(httpConfig, requestHandler);
+ ServerTioConfig serverTioConfig = httpServerStarter.getServerTioConfig();
+ // close Heartbeat
+ serverTioConfig.setHeartbeatTimeout(0);
+ serverTioConfig.statOn = false;
+ // start server
+ try {
+ new MysqlDbConfig().init();
+ new EnjoyEngineConfig().engine();
+ new EhCachePluginConfig().ehCachePlugin();
+ httpServerStarter.start();
+ long end = System.currentTimeMillis();
+ System.out.println((end - start) + "ms");
+ } catch (Exception e) {
+ e.printStackTrace();
+ System.exit(1);
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/frameworks/Java/tio-http-server/src/main/java/com/litongjava/tio/http/server/config/EhCachePluginConfig.java b/frameworks/Java/tio-http-server/src/main/java/com/litongjava/tio/http/server/config/EhCachePluginConfig.java
new file mode 100644
index 00000000000..f949432cd5b
--- /dev/null
+++ b/frameworks/Java/tio-http-server/src/main/java/com/litongjava/tio/http/server/config/EhCachePluginConfig.java
@@ -0,0 +1,12 @@
+ package com.litongjava.tio.http.server.config;
+
+import com.litongjava.ehcache.EhCachePlugin;
+
+public class EhCachePluginConfig {
+
+ public EhCachePlugin ehCachePlugin() {
+ EhCachePlugin ehCachePlugin = new EhCachePlugin();
+ ehCachePlugin.start();
+ return ehCachePlugin;
+ }
+}
diff --git a/frameworks/Java/tio-http-server/src/main/java/com/litongjava/tio/http/server/config/EnjoyEngineConfig.java b/frameworks/Java/tio-http-server/src/main/java/com/litongjava/tio/http/server/config/EnjoyEngineConfig.java
new file mode 100644
index 00000000000..b40c74c448d
--- /dev/null
+++ b/frameworks/Java/tio-http-server/src/main/java/com/litongjava/tio/http/server/config/EnjoyEngineConfig.java
@@ -0,0 +1,22 @@
+package com.litongjava.tio.http.server.config;
+
+import com.jfinal.template.Engine;
+
+public class EnjoyEngineConfig {
+
+ private final String RESOURCE_BASE_PATH = "/templates/";
+
+ public Engine engine() {
+ Engine engine = Engine.use();
+ engine.setBaseTemplatePath(RESOURCE_BASE_PATH);
+ engine.setToClassPathSourceFactory();
+ // 支持模板热加载,绝大多数生产环境下也建议配置成 true,除非是极端高性能的场景
+ // engine.setDevMode(true);
+ // 配置极速模式,性能提升 13%
+ Engine.setFastMode(true);
+ // jfinal 4.9.02 新增配置:支持中文表达式、中文变量名、中文方法名、中文模板函数名
+ Engine.setChineseExpression(true);
+ return engine;
+ }
+
+}
diff --git a/frameworks/Java/tio-http-server/src/main/java/com/litongjava/tio/http/server/config/MysqlDbConfig.java b/frameworks/Java/tio-http-server/src/main/java/com/litongjava/tio/http/server/config/MysqlDbConfig.java
new file mode 100644
index 00000000000..8a547854783
--- /dev/null
+++ b/frameworks/Java/tio-http-server/src/main/java/com/litongjava/tio/http/server/config/MysqlDbConfig.java
@@ -0,0 +1,31 @@
+package com.litongjava.tio.http.server.config;
+
+import com.litongjava.db.activerecord.ActiveRecordPlugin;
+import com.litongjava.db.activerecord.OrderedFieldContainerFactory;
+import com.litongjava.db.hikaricp.HikariCpPlugin;
+import com.litongjava.tio.utils.environment.EnvUtils;
+
+public class MysqlDbConfig {
+
+ public void init() {
+ // start active recored
+ String jdbcUrl = EnvUtils.get("JDBC_URL");
+ // String jdbcUrl = "jdbc:mysql://192.168.3.9/hello_world";
+
+ String jdbcUser = EnvUtils.get("JDBC_USER");
+ // String jdbcUser = "root";
+
+ String jdbcPswd = EnvUtils.get("JDBC_PSWD");
+ // String jdbcPswd = "robot_123456#";
+ HikariCpPlugin hikariCpPlugin = new HikariCpPlugin(jdbcUrl, jdbcUser, jdbcPswd);
+
+ ActiveRecordPlugin arp = new ActiveRecordPlugin(hikariCpPlugin);
+ arp.setContainerFactory(new OrderedFieldContainerFactory());
+
+ // arp.setShowSql(true);
+
+ hikariCpPlugin.start();
+ boolean start = arp.start();
+ System.out.println("db started:" + start);
+ }
+}
diff --git a/frameworks/Java/tio-http-server/src/main/java/com/litongjava/tio/http/server/controller/CacheController.java b/frameworks/Java/tio-http-server/src/main/java/com/litongjava/tio/http/server/controller/CacheController.java
new file mode 100644
index 00000000000..6ecd7664ac1
--- /dev/null
+++ b/frameworks/Java/tio-http-server/src/main/java/com/litongjava/tio/http/server/controller/CacheController.java
@@ -0,0 +1,41 @@
+package com.litongjava.tio.http.server.controller;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+import com.alibaba.fastjson2.JSON;
+import com.litongjava.db.activerecord.Db;
+import com.litongjava.db.activerecord.Record;
+import com.litongjava.tio.http.common.HeaderName;
+import com.litongjava.tio.http.common.HeaderValue;
+import com.litongjava.tio.http.common.HttpRequest;
+import com.litongjava.tio.http.common.HttpResponse;
+import com.litongjava.tio.http.server.utils.RandomUtils;
+
+public class CacheController {
+ // private Logger log = LoggerFactory.getLogger(this.getClass());
+
+ public HttpResponse cachedQuery(HttpRequest request) {
+ String queries = request.getParam("queries");
+ List