Skip to content

返回网页 ​

概述 ​

本文档介绍如何使用 tio-boot 框架创建 Controller 来直接返回网页内容。通过这种方式,可以将存储在数据库中的 HTML 内容直接渲染到浏览器中。

控制器实现 ​

完整代码示例 ​

java
import nexus.io.annotation.RequestPath;
import nexus.io.db.activerecord.Db;
import nexus.io.tio.boot.http.TioRequestContext;
import nexus.io.tio.http.common.HttpResponse;
import nexus.io.tio.http.server.util.Resps;

@RequestPath("/amazon_products")
public class AmazonProductsHtmlController {

  @RequestPath("/{id}")
  public HttpResponse html(Long id) {
    String html = Db.queryStr("select html from amazon_products_html where id=?", id);
    HttpResponse response = TioRequestContext.getResponse();
    Resps.html(response, html);
    return response;
  }
}

代码解析 ​

1. 注解说明 ​

  • @RequestPath("/amazon_products"): 类级别的注解,定义控制器的基础路径
  • @RequestPath("/{id}"): 方法级别的注解,定义具体的路由路径,其中 {id} 是路径参数

2. 核心组件 ​

  • Db.queryStr(): 从数据库中查询 HTML 内容
    • 执行 SQL 查询:select html from amazon_products_html where id=?
    • 参数化查询防止 SQL 注入
  • TioRequestContext.getResponse(): 获取当前的 HTTP 响应对象
  • Resps.html(): 设置响应内容为 HTML 格式

3. 执行流程 ​

  1. 用户访问 /amazon_products/{id} 路径
  2. 控制器接收 id 参数
  3. 从数据库查询对应的 HTML 内容
  4. 将查询结果设置为 HTTP 响应的 HTML 内容
  5. 返回完整的 HTTP 响应

路由访问 ​

GET /amazon_products/123

其中 123 是数据库记录的 ID。

数据库表结构 ​

sql
CREATE TABLE amazon_products_html (
    id BIGINT PRIMARY KEY,
    html TEXT
);

MIT Licensed