boa服务器 说明
0 相关应用及配置boa服务器
端口号
组设置
cgi
ajax
js
1 关于 cgi 说明
简介:
公共网关接口CGI(Common Gateway Interface) 是WWW技术中最重要的技术之一,有着不可替代的重要地位。
CGI是外部应用程序(CGI程序)与Web服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的规程。
CGI规范允许Web服务器执行外部程序,并将它们的输出发送给Web浏览器,CGI将Web的一组简单的静态超媒体
文档变成一个完整的新的交互式媒体。
Common Gateway Interface,简称CGI。在物理上是一段程序,运行在服务器上,提供同客户端HTML页面的接口
功能:
绝大多数的CGI程序被用来解释处理来自表单的输入信息,并在服务器产生相应的处理,或将相应的信息反馈给浏览器。
CGI程序使网页具有交互功能。
处理步骤:
⑴通过Internet把用户请求送到服务器。
⑵服务器接收用户请求并交给CGI程序处理。
⑶CGI程序把处理结果传送给服务器。
⑷服务器把结果送回到用户。
2 关于 boa服务器
boa服务器简介
BOA 服务器是一个小巧高效的web服务器,是一个运行于unix或linux下的,支持CGI的、适合于嵌入式系统的单任务
的http服务器,源代码开放、性能高。
Boa
是一种非常小巧的Web服务器,其可执行代码只有大约60KB左右。作为一种单任务Web服务器,Boa只能依次完成
用户的请求,而不会fork出新的进程来处理并发连接请求。但Boa支持CGI,能够为CGI程序fork出一个进程来执行。
Boa的设计目标是速度和安全。
CGI
在物理上是一段程序,运行在服务器上,提供同客户端HTML页面的接口。即客户端与服务器的接口。
比如留言本的工作流程:先由用户在客户端输入一些信息,如名字之类的东西。接着用户按一下“留言”
(到目前为止工作都在客户端),浏览器把这些信息传送到服务器的CGI目录下特定的cgi程序中,于是cgi程序在服务
器上按照预定的方法进行处理。在本例中就是把用户提交的信息存入指定的文件中。然后cgi程序给客户端发送一个信
息,表示请求的任务已经结束。此时用户在浏览器里将看到“留言结束”的字样。整个过程结束。
3 关于 地震局数据采集系统
3.1编码 --中文出现乱码问题
采集系统采用的汉字编码是:
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
但是我在自己测试单页网页的时候出现了乱码
按照百度的字体库更改为:
<meta http-equiv="content-type" content="text/html;charset=utf-8">
乱码不再出现
说明:
GB2312是GBK的子集,GBK是GB18030的子集
GBK是包括中日韩字符的大字符集合
如果是中文的网站 推荐GB2312 GBK有时还是有点问题
为了避免所有乱码问题,应该采用UTF-8,将来要支持国际化也非常方便
UTF-8可以看作是大字符集,它包含了大部分文字的编码。
使用UTF-8的一个好处是其他地区的用户(如香港台湾)无需安装简体中文支持就能正常观看你的文字而不会出现乱码
cgi 里面已经设置了 gb2312 编码?
本地专业的话,没有必要设置,不过为了兼容可以考虑
4 一些基础
4.1 nbsp
NBSP:“Non-Breaking Space” 的缩写,在HTML中,在nbsp前面加“&”后面加英文分号“;”时表示一个“空格”。
NBSP是常用的编程和网页创建的行不打破空间上的程序或文档的空间。
4.2 <script type="text/javascript">
放在<script></script>之间的是文本类型(text)。
javascript是告诉浏览器里面的文本是属于javascript脚本
4.3 showHint()函数
The showHint() function is a very simple JavaScript function placed in the <head> section of the HTML page.
showHint()函数是一种位于HTML顶端的简单的JS函数。
The function contains the following code:
函数包含以下代码:
function showHint(str)
{
if (str.length > 0)
{
var url="gethint.asp?s&q="+str
xmlHttp=GetXmlHttpObject(stateChanged)
xmlHttp.open("GET", url , true)
xmlHttp.send(null)
}
else
{
document.getElementById("txtHint").innerHTML=""
}
}
The function executes every time a character is entered in the input field.
每当有字符被键入输入区内就会执行这个函数
If there is some input in the text field (str.length > 0) the function executes the following:
如有字符被输入文字输入区(str.length>0)函数就执行:
Creates an XMLHTTP object
建立一个XMLHTTP对象
Sends an HTTP request to the file "gethint.asp" on the server
发送一个HTTP请求到服务器上的"gethint.asp"上
Tells the XMLHTTP object to execute the stateChanged() function when the HTTP triggers a change.
当HTTP触发一次变动则XMLHTTP对象就会执行stateChanged()函数
4.4 innerHTML
定义和用法
对于innerHTML 属性,几乎所有的元素都有innerHTML属性,它是一个字符串,用来设置或获取位于对象起始和结束标签内的HTML。(获取HTML当前标签的起始和结束里面的内容)
编辑本段
语法
tablerowObject.innerHTML=HTML
4.5
标签:td
说明:指定表格中的单元格
4.6
标签:tr
说明:指定表格中的一行。
CTRL + D 效果是 -- 2013-7-8
5 一些疑问
5.1 在内网中,在浏览器中输入地址:192.168.0.119,是怎样实现连接的,本地的话是直接放入本地文件夹的绝对路径,网络或内网中是怎样实现的?
5.2 首页通过键入用户名和密码后点击登录,是怎样实现跳转的,是通过哪个函数或者什么的么?
5.3 各个不同的网页之间的衔接是怎样事项的,因为我现在看每个页面的源代码;有些相似的地方,比如:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="https://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title><!--每个窗口页显示的标题--></title>
<style type="text/css"><!--这里还有其他类型,如javascript,不局限于 style-->
<!--
...<!--这个块内,主要是 body body,td,th ...的设置-->
-->
</style>
<!--嵌入 javascript 脚本-->
<script type="text/javascript">
...
</script>
</head>
<!--body实现--主要是对网页中的模块及元素的处理-->
<body>
<table>
...
</table>
</body>
</html>
2013年7月9日 09:50:24
1 调试自己在 ubuntu12.04 上面用 arm-linux-gcc-4.5.1 生成的 cgi1.cgi
将其拷贝至板子上 /mnt/nand3/www/cgi-bin/
在网页里面键入地址:
https://192.168.0.119/cgi-bin/cgi1.cgi
网页显示结果为:
502 Bad Gateway
The CGI was not CGI/1.1 compliant.
提示的是不满足 CGI/1.1 标准,难道是我的交叉编译工具版本太高?
网上方案:
在终端上还会显示这样的提示信息:
cgi_header:unable to find LFIF
(未鉴定)
这样的错误一般是格式的问题,我写的头是
printf("hello CGI\r\n");
正确的应该是:
printf("hello CGI\n\n");
也就是后面有两个空行,这也是默认的格式,必须这样写才行。
一会儿更改之后看看
hello_cgi.c 源文件:
#include <stdio.h>
int main(void)
{
printf("Content-type: text/html\n\n");
printf("<html>\n");
printf("<head><title>CGI Output</title></head>\n");
printf("<body>\n");
printf("<h1>hello cgi</h1>\n");
printf("</body>\n");
printf("</html>\n");
exit(0);
}
编译后,还是不行,提示i的是:
502 Bad Gateway
The CGI was not CGI/1.1 compliant.
看来我应该参考已存在的能够通过的 cgi 文件
对了,没有指定在 https://192.168.0.119/cgi-bin/ 下的话,将会下载后面的 .cgi 文件
2 关于源码对应说明
首页--192.168.0.119
对应网页源码为:
view-source:https://192.168.0.119/
登入后
默认为:
view-source:https://192.168.0.119/cgi-bin/basic.cgi ----基本属性
说明:
192.168.0.119 是 boa 指定的服务器的地址-这里用到了板子的IP(这里指的是板子作为服务器)
../cgi-bin/ 这里是 boa 指定的需要做出反应的 cgi 程序
每点击一个属性,最后面的 .cgi 文件更改
关于 *.js 的调用时在 .cgi 文件里面,如:
<script src="../javascript/ajax.js" type="text/javascript" >
</script>
同一个页面的几个属性,分别点击后,开头要包含该几个属性的 .cgi 文件,然后才是单个属性的具体内容。
3 关于配置文件
ioparaminfor.conf
workinfor.con ----管理控制
4 关于 ajax
AJAX指一种创建交互式网页应用的网页开发技术
Ajax的核心是JavaScript对象XmlHttpRequest。它是一种支持异步请求的技术。
简而言之,XmlHttpRequest使您可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。
应用优势:
AJAX不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的 Web 应用程序的技术。
通过 AJAX,您的 JavaScript 可使用JavaScript的XMLHttpRequest对象来直接与服务器进行通信。通过这个对象,
您的JavaScript 可在不重载页面的情况与Web服务器交换数据。
AJAX 在浏览器与 Web 服务器之间使用异步数据传输(HTTP 请求),这样就可使网页从服务器请求少量的信息,而不是整个页面。
AJAX 可使因特网应用程序更小、更快,更友好。
AJAX 是一种独立于 Web 服务器软件的浏览器技术。 AJAX 基于下列 Web 标准:
JavaScriptXMLHTMLCSS在 AJAX 中使用的 Web 标准已被良好定义,并被所有的主流浏览器支持。AJAX 应用程序独立于浏览器和平台。
Web 应用程序较桌面应用程序有诸多优势;它们能够涉及广大的用户,它们更易安装及维护,也更易开发。
不过,因特网应用程序并不像传统的桌面应用程序那样完善且友好。
通过 AJAX,因特网应用程序可以变得更完善,更友好。
5 目前 采集系统还欠缺的功能:
在设备监视 栏目,需求说明说的是:
设备监视包含每台仪器状态信息、系统状态监视两个子菜单
难道该地址--192.168.0.119 支持多台设备?
6 疑问
6.1 <style type="text/css">
这里面写样式代码
</style>
表示这是样式表,在中间放入css内容;
type是它的类型属性,text/css是它的值,它们是告诉浏览器这里面的文本内容(text)要当层叠样式表 (css)来解析, 不能当作其它的来解析
6.2
cgiHeaderContentType("text/html\n\n");
7 按照 客户需求说明 修改网页
7.1 login.html ----登录界面的修改
将该网页所需要的 .cgi 文件放入与本 html 同等目录文件夹下面,当点击登录时,触发 .cgi 文件
file:///F:/sk/html/5-13-cgi/html/login.html
--->
file:///F:/sk/html/5-13-cgi/cgi-bin/login.cgi
当没有连接 boa 服务器的时候,若当前目录有 login.cgi 文件,则 chrome 浏览器会下载该 login.cgi 文件
7.2 basic.html
刚才在刷新屏幕的时候,“地震数据采集器”闪一下就恢复到"123456",因为在 函数 window.onload = function()里面指定了
document.getElementById("span1").innerHTML = "123456";
更改之后:
document.getElementById("span1").innerHTML = "地震数据采集器";
刷新即可
7.3 parameter.html
7.4 monitor.html
最后更新:2017-04-03 16:48:31