自学嵌入式day43,商城网页

HTTP服务器与数据库集成项目笔记

项目概述
  • 基于C语言的HTTP服务器程序
  • 集成SQLite3数据库管理功能
  • 实现用户注册/登录和商品搜索功能
  • 使用POSIX套接字API实现网络通信
技术栈
  1. 网络层

    • 使用socket()创建TCP套接字
    • bind()绑定8080端口
    • listen()监听连接请求
    • accept()处理客户端连接
    • 支持HTTP协议基础响应格式
  2. 数据库层

    • SQLite3轻量级数据库

    • 数据库文件:123.db

    • 核心数据表:

      sql 复制代码
      CREATE TABLE users (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        username TEXT UNIQUE NOT NULL,
        password TEXT NOT NULL
      );
      sql 复制代码
      CREATE TABLE goods (
        goods_id INTEGER PRIMARY KEY AUTOINCREMENT,
        goods_name TEXT NOT NULL,
        shop_price REAL,
        ...
      );
  3. 功能模块

    • 用户认证系统
      • 注册:db_register_user()
      • 登录:db_login_user()
    • 商品管理
      • 示例数据预置
      • 搜索功能:handle_search_results()
核心代码逻辑
c 复制代码
// 主服务循环
while (1) {
  int conn_fd = accept(server_fd, (struct sockaddr*)&client_addr, &addr_len);
  char buffer[BUFFER_SIZE];
  read(conn_fd, buffer, sizeof(buffer));
  
  // 请求路由解析
  if (strstr(buffer, "GET /login")) {
    handle_login_page(conn_fd);
  } 
  else if (strstr(buffer, "POST /register")) {
    // 解析表单数据
    handle_register_page(conn_fd);
  }
}
数据库操作示例
c 复制代码
// 用户注册实现
int db_register_user(const char *username, const char *password) {
  sqlite3_prepare_v2(db, "INSERT INTO users VALUES (?,?)", -1, &stmt, NULL);
  sqlite3_bind_text(stmt, 1, username, -1, SQLITE_STATIC);
  sqlite3_bind_text(stmt, 2, password, -1, SQLITE_STATIC);
  int rc = sqlite3_step(stmt);
}
项目亮点
  1. 完整的HTTP请求/响应处理流程
  2. 数据库表结构设计合理
  3. 预置商品数据便于功能演示
  4. 错误处理机制完善(SQLite错误码检查)
优化建议
  1. 增加密码加密存储(如bcrypt)
  2. 实现会话管理(Cookie/Session)
  3. 支持静态文件服务(HTML/CSS)
  4. 添加SQL注入防护
执行流程
  1. 初始化数据库表结构
  2. 启动HTTP监听服务
  3. 根据请求路径分发处理:
    • /login → 登录页面
    • /register → 注册处理
    • /search → 商品查询
  4. 返回HTTP响应(含状态码/内容类型)

HTTP服务器与数据库集成项目笔记

项目概述
  • 基于C语言的HTTP服务器程序
  • 集成SQLite3数据库管理功能
  • 实现用户注册/登录和商品搜索功能
  • 使用POSIX套接字API实现网络通信
技术栈
  1. 网络层

    • 使用socket()创建TCP套接字
    • bind()绑定8080端口
    • listen()监听连接请求
    • accept()处理客户端连接
    • 支持HTTP协议基础响应格式
  2. 数据库层

    • SQLite3轻量级数据库

    • 数据库文件:123.db

    • 核心数据表:

      sql 复制代码
      CREATE TABLE users (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        username TEXT UNIQUE NOT NULL,
        password TEXT NOT NULL
      );
      sql 复制代码
      CREATE TABLE goods (
        goods_id INTEGER PRIMARY KEY AUTOINCREMENT,
        goods_name TEXT NOT NULL,
        shop_price REAL,
        ...
      );
  3. 功能模块

    • 用户认证系统
      • 注册:db_register_user()
      • 登录:db_login_user()
    • 商品管理
      • 示例数据预置
      • 搜索功能:handle_search_results()
核心代码逻辑
c 复制代码
// 主服务循环
while (1) {
  int conn_fd = accept(server_fd, (struct sockaddr*)&client_addr, &addr_len);
  char buffer[BUFFER_SIZE];
  read(conn_fd, buffer, sizeof(buffer));
  
  // 请求路由解析
  if (strstr(buffer, "GET /login")) {
    handle_login_page(conn_fd);
  } 
  else if (strstr(buffer, "POST /register")) {
    // 解析表单数据
    handle_register_page(conn_fd);
  }
}
数据库操作示例
c 复制代码
// 用户注册实现
int db_register_user(const char *username, const char *password) {
  sqlite3_prepare_v2(db, "INSERT INTO users VALUES (?,?)", -1, &stmt, NULL);
  sqlite3_bind_text(stmt, 1, username, -1, SQLITE_STATIC);
  sqlite3_bind_text(stmt, 2, password, -1, SQLITE_STATIC);
  int rc = sqlite3_step(stmt);
}

项目亮点
  1. 完整的HTTP请求/响应处理流程
  2. 数据库表结构设计合理
  3. 预置商品数据便于功能演示
  4. 错误处理机制完善(SQLite错误码检查)
优化建议
  1. 增加密码加密存储(如bcrypt)
  2. 实现会话管理(Cookie/Session)
  3. 支持静态文件服务(HTML/CSS)
  4. 添加SQL注入防护
执行流程
  1. 初始化数据库表结构
  2. 启动HTTP监听服务
  3. 根据请求路径分发处理:
    • /login → 登录页面
    • /register → 注册处理
    • /search → 商品查询
  4. 返回HTTP响应(含状态码/内容类型)

结果图

相关推荐
weixin_668几秒前
Cursor-superpowers插件用法
数据库·人工智能
NWU_白杨6 分钟前
三种常用的数据存储技术
数据库·redis·mysql·sqlite
蓝创工坊Blue Foundry29 分钟前
图片文字提取到 Excel:批量任务如何先定义要交付的字段
运维·服务器·开发语言·数据库·自动化·ocr·excel
麦聪聊数据1 小时前
企业数据市场建设(三):API 化服务封装,让数据开箱即用、避免重复开发
数据库
脱胎换骨-军哥1 小时前
C++数据库存储引擎内核开发:B+树索引与MVCC并发控制的完整实现
数据库·c++·b树
麦聪聊数据1 小时前
企业数据市场建设(四):流程闭环与价值运营,让数据市场真正转起来
运维·数据库
正儿八经的少年1 小时前
redis 的大 key 和热 key 详解
数据库·redis·缓存
AI砖家1 小时前
多智能体系统实战:架构设计、数据库表设计与 Skill 体系
数据库·多智能体·skill·agent架构设计·agengt
夜雪一千2 小时前
MySQL查询条件的顺序是否影响查询效率
数据库·mysql
X-⃢_⃢-X2 小时前
十、Redis之布隆过滤器
数据库·redis·缓存