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