Gohead学习笔记

来源:互联网 发布:哈尔滨数据开放平台 编辑:程序博客网 时间:2024/05/18 03:18
http://www.csdn.net/article/2010-12-21/286055【对Session、Cookie的完全理解】
http://alex-yang-xiansoftware-com.iteye.com/blog/1498536【移植goahead到android或其他嵌入式linux系统上】
http://wtz123.iteye.com/blog/1582226【利用GoAhead构建嵌入式web应用 】
http://www.iteye.com/topic/269213【javascrip 关闭浏览器事件监听】


本文注明转载,但是原文地址被鄙人搞丢了,对原著作者表示抱歉。


==============  动态页面支持 ============== 
在嵌入式设备中,大部分web页面都是动态生成的。
生成动态页面的方法主要有两种:通过C代码生成HTML标签和在HTML页面中嵌入表达式标签。
第一种:直接通过C代码生成页面的优点是灵活,但是却牺牲了友好性,因为不到开始运行程序的最后一刻,你不可能知道这个页面看起来会是个什么样子。
第二种:方法更加直观,你可以使用你所喜欢的工具以所见即所得的方式编辑页面,在必要的地方添加占位符,运行时它们会被动态产生的数据代替。
GoAhead完全支持这两种方式。 


----------------- ASP & GoForms------------------------
GoAhead提供了多种方法编写动态页面,包括asp过程、GoForms过程和embedded JavaScript。
GoAhead主要利用asp过程动态获取系统信息然后显示在页面上;
【GoForms】GoForms过程则主要用来处理用户指令,例如控制设备和修改配置等。


GoAhead提供了asp过程和GoForms过程两种武器,方便的创建具有高度交互性的动态网页,
它们实际上都与定义在服务器端的某个C函数绑定在一起,只是分工不同
asp过程用来生成显示在页面中的动态数据
而GoForms过程则用来处理用户输入和修改设置,它们一起构成了GoAhead的核心。 


【3.2 GoForms过程】
GoAhead实现了称为GoForms的标准的通用网关接口(CGI)处理用户提交的表单。
与传统的CGI方法不同,GoForms过程不是为每个浏览器连接都创建一个新的进程,而是通过与GoAhead服务器共享地址空间,于是可以直接访问全部的请求上下文。
GoForms处理器可以自动解析和访问所有的POST和查询数据,它也提供了一组API可以轻松访问CGI变量。 
CGI(通用网关接口)
通用网关接口(Common Gateway Interface/CGI)是一种重要的互联网技术,可以让一个客户端,从网页浏览器向执行在网络服务器上的程序,请求数据。CGI 描述了客户端和服务器程序之间传输数据的一种标准



在GoAhead中,GoForms实现为一个URL处理器,它会解释以"/goform"开始的URLs。紧跟着"goform"之后的字符串定义了表单名字和用户请求的细节。例如:“/goform/ UpdateConfig?interval=5”这个请求表示调用GoForms过程" UpdateConfig ",GoForms变量interval表示用户设置的新刷新间隔时间。



【http://blog.csdn.net/pan139com/article/details/4207278【基于Goahead的嵌入式web开发】】


============== 1.Goahead的特点 ============== 


支持html,cgi,goform,内嵌的asp(文档说是embed javascript),部分asp语句。
goform文档说是memory cgi.说白了就是一个用来替代cgi 程序的函数,但是他与goahead服务器程序编译在一起,并需要通过websFormDefine()向服务器注册。
内嵌的asp是可以嵌入到网页中的函数,跟goform 一样也需要注册,通过websAspDefine()注册。
以上两个特性是我用的最多的。


websFormDefine(T("formFoo"),“formTest”);
void formTest(webs_t wp, char_t *path, char_t *query);
formTest是定义的函数,formFoo是调用时用的,一般是用来处理表单,


如 <form action=/goform/formFoo method=post>
websAspDefine(T("aspFoo"),"aspTest");
int aspTest(int eid, webs_t wp, int argc, char_t **argv);
aspTest是定义的函数,aspFoo在网页中调用时用,
如 <% aspFoo(arg1,arg2 ...); %>  这一部分会在服务端解析出来,你可以通过他依据不同参数替换成不同的内容。
goahead并不完整地支持asp因此对一些 .asp网页可能有问题,需要对网页做一些修改。


 




============== 2 。goahead的用户管理 ============== 


他的用户管理依靠一个用户管理文件,默认是umconfig.txt。定义USER_MANAGEMENT_SUPPORT宏并配置好这个文件基本就可以了。
umconfig.txt中有用户信息表,用户组信息表,网页访问限制表三个部分。
某个网页需要通过用户限制访问就需要将网页的uri定义在访问的限制表中。没有限制就可以任意访问。
我表达能力不好,贴个文件一行行解释吧


-------------------  umconfig.txt 内容如下 -------------------  


TABLE=users    用户信息表开始
ROW=0         这行不能少,一个用户信息 的开始
name=admin   用户名admin
password=Uz    我的密码123456
group=Administrator    属于Administrator用户组
prot=1   为1表示这个用户受保护不能被删除,0表示可以删除
disable=0    为0表示已经使能了,如果是1用户就禁止了
ROW=1
name=user
password=Uz
group=Guest
prot=0
disable=0
TABLE=groups     用户组信息表
ROW=0      开始一个用户组的信息
name=Administrator   用户组的名字
priv=4   用户组的访问权限,可以是0,1,2,4分别代表AM_NONE,AM_READ,AM_WRITE,AM_ADMIN.这之间没有权限大小之分。
method=3   密码认证方法,可以是0,1,2,3。0什么你都没权访问,1什么你都有权限。2密码与用户名简单加密传输,3密码和用户名经过更安全的加密。
prot=1   一样的用户组不能删除
disable=0   启用了
ROW=1
name=Guest
priv=1
method=3
prot=1
disable=0
TABLE=access
ROW=0
name=/home.htm  这个网页有认证的要求
method=3
secure=0
group=Guest    Guest用户组才能访问/home.htm网页,administrator用户组不能访问。特别说明:只有属于这个用户组的用户才能访问这个网页,其他一改不能访问。需要改变这个行为的需要自己改源代码。goahead先查找网页限制相关联的group的method属性,由他的group的method属性决定访问权限。如果没有定义group=Guest这一行就根据自身的method属性决定访问权限。
ROW=1
name=/player.htm
method=3
secure=0
group=Guest
ROW=2
name=/en/    对一个目录中所有内容(包括子目录中的内容)进行限制。注意后面一定要加‘/’字符。
method=3
secure=0
group=Administrator
ROW=3
name=/cn/
method=3
secure=0
group=Administrator


就这些吧,可能还有错误的地方。如果你发现了,请指正。


 

要了解goahead的行为还是需要认真分析原代码。
原创粉丝点击