HTML 基础 + SQLite3 数据交互

一、HTML 核心基础:页面结构与常用标签

HTML(超文本标记语言)是 Web 页面的骨架,嵌入式场景下无需复杂样式,掌握核心标签即可满足需求。

1. HTML 基本格式(必背)

html

预览

复制代码
<!DOCTYPE html>  <!-- 声明HTML5文档类型 -->
<html>           <!-- 根标签 -->
<head>           <!-- 头部:元数据、标题等 -->
    <meta charset="utf-8">  <!-- 编码格式,解决中文乱码 -->
    <title>页面标题</title>  <!-- 浏览器标签页标题 -->
</head>
<body>           <!-- 主体:页面可见内容 -->
    这里是页面核心内容
</body>
</html>

关键注意:<meta charset="utf-8"> 必须加,否则嵌入式 Web 服务器返回的中文会乱码。

2. 超链接标签 <a>:实现页面跳转

<a> 是嵌入式 Web 中最常用的标签之一,支持外部网站、本地文件、图片三种跳转形式:

html

预览

复制代码
<!-- 1. 链接外部网站 -->
<a href="http://www.baidu.com">访问百度</a>

<!-- 2. 链接本地HTML文件(同目录) -->
<br> <!-- 换行标签 -->
<a href="1.html">打开本地1.html</a>

<!-- 3. 图片作为链接(点击图片跳转) -->
<br>
<a href="login.html"><img src="icon.jpg"></a>

3. 图片标签 <img>:展示设备可视化内容

嵌入式场景常用来展示设备状态图、二维码等,单标签无需闭合:

html

预览

复制代码
<!-- 基础用法:src指定路径,alt备用文本,宽高固定值 -->
<img src="abc.jpg" alt="设备状态图" width="100" height="200">

<!-- 自适应布局:宽高按百分比设置(适配不同屏幕) -->
<img src="logo.jpg" alt="设备LOGO" width="50%" height="20%">
属性 作用 嵌入式场景建议
src 图片路径 用相对路径(如./img/xxx.jpg),避免绝对路径
alt 图片加载失败时显示的文本 填写设备相关提示(如 "传感器状态图")
width/height 宽高 优先用百分比,适配嵌入式屏小尺寸

4. 表单标签 <form>:实现数据提交(核心)

嵌入式 Web 中,表单是设备向服务器提交参数(如登录密码、配置参数)的核心方式,支持GET/POST两种提交方式。

(1)表单基础结构

html

预览

复制代码
<!-- action:提交地址(嵌入式服务器IP/路径);method:提交方式 -->
<form action="http://192.168.1.100/login" method="get">
    <!-- 表单内容:输入框、按钮等 -->
    用户名:<input type="text" name="username" required>
    <br>
    密码:<input type="password" name="password" maxlength="6">
    <br>
    <input type="submit" value="登录">  <!-- 提交按钮 -->
    <input type="reset" value="重置">   <!-- 重置按钮 -->
</form>
(2)核心属性说明
表单属性 取值 嵌入式场景选择
action 服务器地址 / 路径 填嵌入式 Web 服务器 IP + 接口(如/login
method get/post - GET:参数拼在 URL 后(简单场景,如登录)- POST:参数封装在请求体(安全,如配置参数)
(3)input 输入框核心类型(嵌入式高频)
type 作用 应用场景
text 单行文本框 输入用户名、设备编号
password 密码框(内容隐藏) 输入登录密码、设备密钥
submit 提交按钮 提交表单数据到服务器
reset 重置按钮 清空表单输入内容
button 普通按钮 绑定 JS 事件(如本地逻辑处理)
hidden 隐藏字段(不显示) 传递设备 ID、默认参数等无需用户输入的内容
email 邮箱格式校验 配置设备通知邮箱(需兼容)
(4)input 常用属性

html

预览

复制代码
<!-- required:必填项;placeholder:提示文字;value:默认值 -->
<input type="text" name="device_id" required placeholder="请输入设备ID" value="dev001">
<!-- maxlength:限制输入长度 -->
<input type="password" name="pwd" maxlength="8">

二、HTML+SQLite3:嵌入式 Web 数据交互实战

嵌入式 Web 服务中,HTML 表单提交的数据需通过 SQLite3 数据库验证 / 存储,以下是核心交互示例。

1. 场景:登录表单 + SQLite3 验证

(1)登录页面(login.html)

html

预览

复制代码
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>嵌入式设备登录</title>
</head>
<body>
    <h3>设备管理后台</h3>
    <form action="/login" method="get">
        用户名:<input type="text" name="username" required placeholder="请输入用户名">
        <br><br>
        密码:<input type="password" name="password" required placeholder="请输入密码">
        <br><br>
        <input type="submit" value="登录">
        <input type="reset" value="重置">
    </form>
</body>
</html>
(2)SQLite3 数据库验证核心代码

c

运行

复制代码
#include <sqlite3.h>
#include <stdio.h>
#include <string.h>

// 回调函数:查询到匹配数据时设置flag=1
int show(void* arg, int col, char** result, char** title) {
    *(int*)arg = 1;
    return 0;
}

// 验证用户名密码(嵌入式Web服务器核心逻辑)
int check_login(const char* name, const char* pass) {
    sqlite3* db = NULL;
    int ret = sqlite3_open("user.db", &db); // 打开用户数据库
    if (ret != SQLITE_OK) {
        fprintf(stderr, "数据库打开失败:%s\n", sqlite3_errmsg(db));
        sqlite3_close(db);
        return -1;
    }

    char* errmsg = NULL;
    int flag = 0;
    char sql_cmd[512] = {0};
    // 拼接查询SQL:匹配用户名和密码
    sprintf(sql_cmd, "select * from user where name = '%s' and password = '%s';", name, pass);
    
    // 执行SQL,回调show函数
    ret = sqlite3_exec(db, sql_cmd, show, &flag, &errmsg);
    if (ret != SQLITE_OK) {
        fprintf(stderr, "SQL执行失败:%s\n", errmsg);
        sqlite3_free(errmsg);
        sqlite3_close(db);
        return -1;
    }

    sqlite3_close(db);
    return flag; // 1=验证成功,0=验证失败
}

2. 核心交互流程

  1. 浏览器访问嵌入式服务器的login.html页面;
  2. 用户输入用户名 / 密码,点击 "提交",表单通过GET方式将参数拼到 URL(如/login?username=admin&password=123456);
  3. 嵌入式 Web 服务器解析 URL 中的参数,调用check_login函数;
  4. check_login通过 SQLite3 查询user.db中的用户表,返回验证结果;
  5. 服务器根据结果返回登录成功 / 失败页面。

三、嵌入式 Web 开发避坑指南

  1. 中文乱码 :HTML 必须加<meta charset="utf-8">,服务器返回页面时需确保编码一致;
  2. 路径问题 :HTML 中图片、本地链接用相对路径(./xxx),避免绝对路径(/home/xxx);
  3. 表单提交 :嵌入式服务器优先支持GET(解析简单),POST需解析请求体;
  4. SQLite3 容错 :数据库操作后必须关闭句柄(sqlite3_close),避免资源泄漏;
  5. 适配性:嵌入式屏尺寸小,HTML 尽量不用复杂样式,表单 / 按钮按百分比布局。

四、总结

嵌入式 Web 开发的核心是 "轻量、实用":HTML 层面掌握表单、超链接、图片即可满足大部分场景,无需过度追求样式;数据交互层面,SQLite3 凭借轻量、无需安装的特性,是嵌入式 Web 服务的最佳数据库选择。

结合本文的 HTML 基础和 SQLite3 交互示例,可快速实现嵌入式设备的 Web 登录、参数配置、状态展示等核心功能,适配智能家居、工业控制、物联网网关等各类嵌入式场景。

相关推荐
秋雨雁南飞2 小时前
WaferMap.HTML
前端·css·html
技术净胜2 小时前
Python常用框架介绍
开发语言·python·sqlite
0思必得02 小时前
[Web自动化] Web安全基础
运维·前端·javascript·python·自动化·html·web自动化
舆通Geo优化2 小时前
2025年GEO优化选哪家好?长沙GEO优化公司排名:GEO服务商哪家靠谱?
javascript·css·html
Reese_Cool2 小时前
一篇文章梳理 HTML + CSS 核心知识(含响应式与 Sass)
前端·css·html
代码游侠2 小时前
应用——SQLite3 C 编程学习
linux·服务器·c语言·数据库·笔记·网络协议·sqlite
松涛和鸣3 小时前
42、SQLite3 :字典入库与数据查询
linux·前端·网络·数据库·udp·sqlite
代码游侠3 小时前
学习笔记——SQLite3 编程与 HTML 基础
网络·笔记·算法·sqlite·html
王小菲16 小时前
《网页布局速通:8 大主流方案 + 实战案例》-pink老师现代网页布局总结
css·面试·html