嵌入式web服务器goahead从移植到使用之action
·
前面我们已经熟悉了goahead-test程序的基本使用方法,今天测试一下action。
在test.c中,actionTest相关的代码如下(这里只分析其中一个,源码定义了三个):
//定义action,将函数actionTest绑定到/action/test这个url
websDefineAction("test", actionTest);
/*
Implement /action/actionTest. Parse the form variables: name, address and echo back.
*/
static void actionTest(Webs *wp)
{
cchar *name, *address;
/*获取变量"name"和"address"的值*/
name = websGetVar(wp, "name", NULL);
address = websGetVar(wp, "address", NULL);
websSetStatus(wp, 200);
websWriteHeaders(wp, -1, 0);
websWriteEndHeaders(wp);
//回显到页面上
websWrite(wp, "<html><body><h2>name: %s, address: %s</h2></body></html>\n", name, address);
websFlush(wp, 0);
websDone(wp);
}
可以看到其功能是通过web页面获取变量”name”和”address”的值,然后回显到页面上,由于例程中没有提供对应的web页面,所以需要自己编写,我们做一个简单的输入界面,代码如下:
<!DOCTYPE html>
<html>
<meta charset="utf-8"/>
<body>
<!-- 注意action后面的名字(test)要与程序中的对应 -->
<form method="POST" action="/action/test">
actionTest:
</br>
<!-- name后面的是变量名"name"要与程序中的对应 -->
<input type="text" name="name" value="name" />
</br>
<!-- name后面的是变量名"address"要与程序中的对应 -->
<input type="text" name="address" value="address" />
</br>
<input type="submit" value="ok" />
</form>
</body>
</html>
将其保存为test_action.html,并且存放到web目录下(注意这里不能将action写在前面,我也不知道为什么,测试的时候发现只要将action写在前面,运行的的时候就会提示action未定义),这里完成后,我们就可以运行goahead-test程序访问这个页面了。
输入如下命令运行goahead服务器:
./goahead-test -v --home ../../../test/
在浏览器访问127.0.0.1:18080/test_action.html就可以看到对应的页面了(如图1),在输入框中分别输入变量”name”和”address”的内容,点击提交,服务器就会将我们输入的内容回显到页面上(如图2)。

图1

图2
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)