返回网页
概述
本文档介绍如何使用 tio-boot 框架创建 Controller 来直接返回网页内容。通过这种方式,可以将存储在数据库中的 HTML 内容直接渲染到浏览器中。
控制器实现
完整代码示例
import com.litongjava.annotation.RequestPath;
import com.litongjava.db.activerecord.Db;
import com.litongjava.tio.boot.http.TioRequestContext;
import com.litongjava.tio.http.common.HttpResponse;
import com.litongjava.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 注入
- 执行 SQL 查询:
- TioRequestContext.getResponse(): 获取当前的 HTTP 响应对象
- Resps.html(): 设置响应内容为 HTML 格式
3. 执行流程
- 用户访问
/amazon_products/{id}
路径 - 控制器接收
id
参数 - 从数据库查询对应的 HTML 内容
- 将查询结果设置为 HTTP 响应的 HTML 内容
- 返回完整的 HTTP 响应
路由访问
GET /amazon_products/123
其中 123
是数据库记录的 ID。
数据库表结构
CREATE TABLE amazon_products_html (
id BIGINT PRIMARY KEY,
html TEXT
);