新聞中心
如何用html php和數(shù)據(jù)庫之間建立聯(lián)系
用html 寫好頁面,php與數(shù)據(jù)庫連接,數(shù)據(jù)庫的數(shù)據(jù)可通過php查詢并傳輸給html,這時(shí)需要用js來接受php傳過來的數(shù)據(jù)并將數(shù)據(jù)展示在html中。
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了鎮(zhèn)雄免費(fèi)建站歡迎大家使用!
PHP處理數(shù)據(jù)庫
請檢查一下$WB對應(yīng)的表是否已經(jīng)定義?提示的是(indexx附近有語法錯(cuò)誤。是你的SQL語句有問題,
建議將執(zhí)行的SQL單獨(dú)賦值。
$sql="insert into $WB (indexx,id,mid,uid,parent,t,reposts_count,attitudes_count,comments_count,text,original_text,user_created_at,followers_count,
bi_followers_count,favourites_count,statuses_count,friends_count,username,screen_name,user_description,gender,province,city,verified,verified_reason,verified_type,
user_location,user_avatar,user_geo_enabled,picture,geo) values $data_values");";
echo $sql."br/";//測試輸出,然后檢查該SQL語句的語法是否正確。
$query=mysqli_query($sql);
基于Web的數(shù)據(jù)庫系統(tǒng)開發(fā)論文
基于web的數(shù)據(jù)庫方面的論文,在鍵盤論文網(wǎng)上很多的,你可以參考下,我之前也是找他們的在線輔導(dǎo)老師咨詢的,非常專業(yè)
這里還有點(diǎn)資料,你參考下
主要的內(nèi)容:
1)將Web技術(shù)和數(shù)據(jù)庫技術(shù)相結(jié)合,在WWW上開發(fā)動態(tài)交互的Web數(shù)據(jù)庫應(yīng)用,已逐 漸成為基于WWW的信息管理系統(tǒng)的核心和重要發(fā)展方向,本文分析和研究了關(guān)于動態(tài)Web 數(shù)據(jù)庫的開發(fā)與應(yīng)用及其相關(guān)的問題。
2)簡要地介紹了Web數(shù)據(jù)庫與傳統(tǒng)數(shù)據(jù)庫相比的諸多優(yōu)點(diǎn),以及目前Web數(shù)據(jù)庫在不 同應(yīng)用方案中的類型;討論了兩種Web數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu):混合Web數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu)、B/S模 式Web數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu)
3)闡述了Web和關(guān)系數(shù)據(jù)庫處理模式的不同之處,在此基礎(chǔ)上討論了 三種集成模型:CGI、API、Fat Client;分析了Web數(shù)據(jù)庫的幾種實(shí)現(xiàn)技術(shù),并分析了它們各 自的優(yōu)缺點(diǎn)和應(yīng)用場所;初步探討了Windows DNA體系結(jié)構(gòu),在此基礎(chǔ)上把Web數(shù)據(jù)庫與 DNA相集成,進(jìn)行可擴(kuò)展設(shè)計(jì)
4)最后,在數(shù)據(jù)庫安全與網(wǎng)絡(luò)安全問題的基礎(chǔ)上,從服務(wù)器安 全、用戶身份驗(yàn)證、對話期安全三方面研究了基于Web的數(shù)據(jù)庫的安全問題。
結(jié)論:
本文研究了數(shù)據(jù)庫與www相結(jié)合的理論和技術(shù)問題,研究結(jié)果表明:兩者的集成可以 把Web與數(shù)據(jù)庫的優(yōu)點(diǎn)集中在一起,使計(jì)算機(jī)系統(tǒng)具有數(shù)據(jù)庫功能、網(wǎng)絡(luò)功能、多媒體功能 和超文本功能。Web數(shù)據(jù)庫與DNA體系結(jié)構(gòu)相結(jié)合,利用XML技術(shù),使應(yīng)用程序具有更好 的擴(kuò)展性,達(dá)到節(jié)約資源的目的
論文的框架你看下,大同小異的:
第一章 緒論38-45
1.1 Www的動態(tài)交互技術(shù)38-39
1.2 WWW環(huán)境下建立數(shù)據(jù)庫系統(tǒng)39-43
1.2.1 數(shù)據(jù)庫系統(tǒng)39-41
1.2.2 WWW環(huán)境下的數(shù)據(jù)庫系統(tǒng)41-43
1.3 Web數(shù)據(jù)庫的應(yīng)用分類43-45
第二章 Web數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu)45-49
2.1 混合web數(shù)據(jù)庫系統(tǒng)45
2.2 B/S模式Web數(shù)據(jù)庫系統(tǒng)45-49
2.2.1 三層體系結(jié)構(gòu)45-47
2.2.2 多層體系結(jié)構(gòu)47
2.2.3 三層B/S模式47-49
第三章 Web數(shù)據(jù)庫的集成模型49-55
3.1 CGI Architecture50-51
3.2 API Architecture51-52
3.3 Fat Client Architecture52-55
第四章 Web數(shù)據(jù)庫的實(shí)現(xiàn)技術(shù)55-87
4.1 基于web的異構(gòu)數(shù)據(jù)庫系統(tǒng)的集成55-58
4.1.1 數(shù)據(jù)庫系統(tǒng)之間的差異性55
4.1.2 異構(gòu)數(shù)據(jù)庫系統(tǒng)集成的策略55-56
4.1.3 ODBC(開放式數(shù)據(jù)庫互聯(lián))56-57
4.1.4 OLE DB技術(shù)57-58
4.2 存取數(shù)據(jù)庫的對象群:DAO,RDO,及ADO58-61
4.2.1 DAO58-59
4.2.2 RDO59
4.2.3 ADO(ActiveX Data Objects)59-60
4.2.4 與其他數(shù)據(jù)訪問對象一起使用ADO60-61
4.3 用類進(jìn)行數(shù)據(jù)庫訪問61-63
4.4 ASP網(wǎng)絡(luò)開發(fā)技術(shù)63-66
4.4.1 ASP技術(shù)概述63-64
4.4.2 IDC技術(shù)64-65
4.4.3 ASP和傳統(tǒng)CGI的對比65
4.4.4 ASP同腳本語言的關(guān)系65-66
4.5 利用ASP技術(shù)訪問Web數(shù)據(jù)庫的方法66-68
4.5.1 Web數(shù)據(jù)庫訪問方法之一66
4.5.2 Web數(shù)據(jù)庫訪問方法之二66-67
4.5.3 RDS67-68
4.6 用Java語言訪問數(shù)據(jù)庫68-80
4.6.1 Java語言的特點(diǎn)68-70
4.6.2 Applet和Application70-71
4.6.3 Java語言與數(shù)據(jù)庫的接口JDBC71
4.6.4 JDBC的體系結(jié)構(gòu)71-74
4.6.5 JDBC的功能與特點(diǎn)74-78
4.6.6 Agave JDBC NetServer78-80
4.7 JSP網(wǎng)絡(luò)開發(fā)技術(shù)80-85
4.7.1 JSP的運(yùn)行方式80-81
4.7.2 JSP與ASP的比較81
4.7.3 JSP與傳統(tǒng)CGI比較81
4.7.4 Java Servlet技術(shù)81-83
4.7.5 JSP和Servlet的結(jié)合使用83-84
4.7.6 JavaBeans84-85
4.8 PHP網(wǎng)絡(luò)開發(fā)技術(shù)85-87
4.8.1 PHP技術(shù)概述85-86
4.8.2 PHP與其它動態(tài)發(fā)布網(wǎng)頁技術(shù)的比較86-87
第五章 Web數(shù)據(jù)庫與DNA87-96
5.1 Web數(shù)據(jù)庫與DNA87-89
5.1.1 DNA體系結(jié)構(gòu)的優(yōu)點(diǎn)87
5.1.2 DNA體系結(jié)構(gòu)的實(shí)現(xiàn)87-88
5.1.3 Web-DNA體系結(jié)構(gòu)88-89
5.2 使用ADO記錄集89-91
5.2.1 在服務(wù)器之間傳送數(shù)據(jù)89-90
5.2.2 使用層次化的ADO記錄集90-91
5.3 使用DNA模型進(jìn)行可擴(kuò)展設(shè)計(jì)91-93
5.3.1 可擴(kuò)展性是關(guān)于節(jié)約資源的91
5.3.2 三種不同的用戶界面91
5.3.3 有限可擴(kuò)展性的經(jīng)典實(shí)現(xiàn)及其改進(jìn)方法91-93
5.4.1 XML94
5.4.2 把記錄集轉(zhuǎn)成XML94-96
第六章 Web數(shù)據(jù)庫系統(tǒng)安全96-106
6.1 信息安全問題的新局面96-97
6.2 數(shù)據(jù)庫的安全問題97-98
6.3 網(wǎng)絡(luò)安全問題98-100
6.3.1 防火墻技術(shù)99
6.3.2 數(shù)據(jù)加密技術(shù)99-100
6.3.3 網(wǎng)絡(luò)安全一體化解決方法100
6.4 基于Web的數(shù)據(jù)庫安全問題100-106
6.4.1 Web數(shù)據(jù)庫的安全問題100-101
6.4.2 服務(wù)器安全101-103
6.4.3 用戶身份驗(yàn)證安全103-106
總結(jié)
最后還有參考文獻(xiàn)和致謝就不寫了
如果還有什么不懂的就上鍵盤論文自己看吧
用php和mysql做的作業(yè),有大神能給我一份參考嗎?謝謝。
PHP 和 AJAX MySQL 數(shù)據(jù)庫實(shí)例
AJAX XML
AJAX responseXML
AJAX 可用來與數(shù)據(jù)庫進(jìn)行交互式通信。
AJAX 數(shù)據(jù)庫實(shí)例
在下面的 AJAX 實(shí)例中,我們將演示網(wǎng)頁如何使用 AJAX 技術(shù)從 MySQL 數(shù)據(jù)庫中讀取信息。
在下拉列表中選擇一個(gè)名字 (測試說明:該實(shí)例功能未實(shí)現(xiàn))
Select a User:
在此列出用戶信息。
此列由四個(gè)元素組成:
MySQL 數(shù)據(jù)庫
簡單的 HTML 表單
JavaScript
PHP 頁面
數(shù)據(jù)庫
將在本例中使用的數(shù)據(jù)庫看起來類似這樣:
idFirstNameLastNameAgeHometownJob
1PeterGriffin41QuahogBrewery
2LoisGriffin40NewportPiano Teacher
3JosephSwanson39QuahogPolice Officer
4GlennQuagmire41QuahogPilot
HTML 表單
上面的例子包含了一個(gè)簡單的 HTML 表單,以及指向 JavaScript 的鏈接:
html
head
script src="selectuser.js"/script
/head
body
form
Select a User:
select name="users" onchange="showUser(this.value)"
option value="1"Peter Griffin/option
option value="2"Lois Griffin/option
option value="3"Glenn Quagmire/option
option value="4"Joseph Swanson/option
/select
/form
p
div id="txtHint"bUser info will be listed here./b/div
/p
/body
/html
例子解釋 - HTML 表單
正如您看到的,它僅僅是一個(gè)簡單的 HTML 表單,其中帶有名為 "users" 的下拉列表,這個(gè)列表包含了姓名,以及與數(shù)據(jù)庫的 "id" 對應(yīng)的選項(xiàng)值。
表單下面的段落包含了名為 "txtHint" 的 div。這個(gè) div 用作從 web 服務(wù)器檢索到的信息的占位符。
當(dāng)用戶選擇數(shù)據(jù)時(shí),執(zhí)行名為 "showUser()" 的函數(shù)。該函數(shù)的執(zhí)行由 "onchange" 事件觸發(fā)。
換句話說:每當(dāng)用戶改變下拉列表中的值,就會調(diào)用 showUser() 函數(shù)。
JavaScript
這是存儲在 "selectuser.js" 文件中的 JavaScript 代碼:
var xmlHttp
function showUser(str)
{
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
{
alert ("Browser does not support HTTP Request")
return
}
var url="getuser.php"
url=url+"?q="+str
url=url+"sid="+Math.random()
xmlHttp.onreadystatechange=stateChanged
xmlHttp.open("GET",url,true)
xmlHttp.send(null)
}
function stateChanged()
{
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{
document.getElementById("txtHint").innerHTML=xmlHttp.responseText
}
}
function GetXmlHttpObject()
{
var xmlHttp=null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
//Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
例子解釋:
stateChanged() 和 GetXmlHttpObject 函數(shù)與 PHP AJAX 請求 那一節(jié)中的相同,您可以參閱其中的相關(guān)解釋。
showUser() 函數(shù)
假如下拉列表中的項(xiàng)目被選擇,函數(shù)執(zhí)行:
調(diào)用 GetXmlHttpObject 函數(shù)來創(chuàng)建 XMLHTTP 對象
定義發(fā)送到服務(wù)器的 URL(文件名)
向 URL 添加帶有下拉列表內(nèi)容的參數(shù) (q)
添加一個(gè)隨機(jī)數(shù),以防服務(wù)器使用緩存的文件
當(dāng)觸發(fā)事件時(shí)調(diào)用 stateChanged
通過給定的 URL 打開 XMLHTTP 對象
向服務(wù)器發(fā)送 HTTP 請求
PHP 頁面
由 JavaScript 調(diào)用的服務(wù)器頁面,是名為 "getuser.php" 的簡單 PHP 文件。
該頁面用 PHP 編寫,并使用 MySQL 數(shù)據(jù)庫。
其中的代碼執(zhí)行針對數(shù)據(jù)庫的 SQL 查詢,并以 HTML 表格返回結(jié)果:
?php
$q=$_GET["q"];
$con = mysql_connect('localhost', 'peter', 'abc123');
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("ajax_demo", $con);
$sql="SELECT * FROM user WHERE id = '".$q."'";
$result = mysql_query($sql);
echo "table border='1'
tr
thFirstname/th
thLastname/th
thAge/th
thHometown/th
thJob/th
/tr";
while($row = mysql_fetch_array($result))
{
echo "tr";
echo "td" . $row['FirstName'] . "/td";
echo "td" . $row['LastName'] . "/td";
echo "td" . $row['Age'] . "/td";
echo "td" . $row['Hometown'] . "/td";
echo "td" . $row['Job'] . "/td";
echo "/tr";
}
echo "/table";
mysql_close($con);
?
例子解釋:
當(dāng)查詢從 JavaScript 被發(fā)送到這個(gè) PHP 頁面,會發(fā)生:
PHP 打開到達(dá) MySQL 服務(wù)器的連接
找到擁有指定姓名的 "user"
創(chuàng)建表格,插入數(shù)據(jù),然后將其發(fā)送到 "txtHint" 占位符
用php將數(shù)據(jù)寫進(jìn)數(shù)據(jù)庫中
如果你會點(diǎn)php基礎(chǔ)我可以給你點(diǎn)參考意見
一個(gè)是,你這個(gè)文件肯定是txt格式的
$fp = fopen('xxx.txt','r');//用只讀方式打開文件
$getsource = fgets($fp);//讀取第一行,主要是用于去除第一行
while(!feof($fp)){
$getsource = fgets($fp);//獲取有用數(shù)據(jù)
$insource = explode(" ", $getsource);//把一行文字變成數(shù)組,按符號分割
/*---------------下面寫數(shù)據(jù)存儲的sql-------------------*/
......
/*---------------上面寫數(shù)據(jù)存儲的sql-------------------*/
}
我默認(rèn)為你對php和mysql是熟悉的,不然你也不會打算用php寫這個(gè)程序,我只提供你點(diǎn)思路,php對文件操作不熟悉的話你可以參考下這篇文章
;id=77class=2
希望對你有幫助
數(shù)據(jù)庫論文 急求!!追加1000分
一、三個(gè)世界
1、現(xiàn)實(shí)世界 人們管理的對象存于現(xiàn)實(shí)世界中?,F(xiàn)實(shí)世界的事物及事物之間存在著聯(lián)系,這種聯(lián)系是客觀存在的,是由事物本身的性質(zhì)決定的。例如學(xué)校的教學(xué)系統(tǒng)中有教師、學(xué)生、課程,教師為學(xué)生授課,學(xué)生選修課程并取得成績。
2、概念世界 概念世界是現(xiàn)實(shí)世界在人們頭腦中的反映,是對客觀事物及其聯(lián)系的一種抽象描述,從而產(chǎn)生概念模型。概念模型是現(xiàn)實(shí)世界到機(jī)器世界必然經(jīng)過的中間層次。涉及到下面幾個(gè)術(shù)語:
實(shí)體:我們把客觀存在并且可以相互區(qū)別的事物稱為實(shí)體。實(shí)體可以是實(shí)際事物,也可以是抽象事件。如一個(gè)職工、一場比賽等。
實(shí)體集:同一類實(shí)體的集合稱為實(shí)體集。如全體職工。注意區(qū)分"型"與"值"的概念。如每個(gè)職工是職工實(shí)體"型"的一個(gè)具體"值"。
屬性:描述實(shí)體的特性稱為屬性。如職工的職工號,姓名,性別,出生日期,職稱等。
關(guān)鍵字:如果某個(gè)屬性或?qū)傩越M合的值能唯一地標(biāo)識出實(shí)體集中的每一個(gè)實(shí)體,可以選作關(guān)鍵字。用作標(biāo)識的關(guān)鍵字,也稱為碼。如"職工號"就可作為關(guān)鍵字。
聯(lián)系:實(shí)體集之間的對應(yīng)關(guān)系稱為聯(lián)系,它反映現(xiàn)實(shí)世界事物之間的相互關(guān)聯(lián)。聯(lián)系分為兩種,一種是實(shí)體內(nèi)部各屬性之間的聯(lián)系。另一種是實(shí)體之間的聯(lián)系。
3、機(jī)器世界 存入計(jì)算機(jī)系統(tǒng)里的數(shù)據(jù)是將概念世界中的事物數(shù)據(jù)化的結(jié)果。為了準(zhǔn)確地反映事物本身及事物之間的各種聯(lián)系,數(shù)據(jù)庫中的數(shù)據(jù)必須有一定的結(jié)構(gòu),這種結(jié)構(gòu)用數(shù)據(jù)模型來表示。數(shù)據(jù)模型將概念世界中的實(shí)體,及實(shí)體間的聯(lián)系進(jìn)一步抽象成便于計(jì)算機(jī)處理的方式。
數(shù)據(jù)模型應(yīng)滿足三方面要求:一是能比較真實(shí)地模擬現(xiàn)實(shí)世界;二是容易為人所理解;三是便于在計(jì)算機(jī)上實(shí)現(xiàn)。數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和完整性約束是構(gòu)成數(shù)據(jù)模型的三要素。數(shù)據(jù)模型主要包括網(wǎng)狀模型、層次模型、關(guān)系模型等,它是按計(jì)算機(jī)系統(tǒng)的觀點(diǎn)對數(shù)據(jù)建模,用于DBMS的實(shí)現(xiàn)。
關(guān)系數(shù)據(jù)庫采用關(guān)系模型作為數(shù)據(jù)的組織方式。 關(guān)系數(shù)據(jù)庫因其嚴(yán)格的數(shù)學(xué)理論、使用簡單靈活、數(shù)據(jù)獨(dú)立性強(qiáng)等特點(diǎn),而被公認(rèn)為最有前途的一種數(shù)據(jù)庫管理系統(tǒng)。它的發(fā)展十分迅速,目前已成為占據(jù)主導(dǎo)地位的數(shù)據(jù)庫管理系統(tǒng)。自20世紀(jì)80年代以來,作為商品推出的數(shù)據(jù)庫管理系統(tǒng)幾乎都是關(guān)系型的,例如,Oracle,Sybase,Informix,Visual FoxPro等。
網(wǎng)絡(luò)數(shù)據(jù)庫也叫Web數(shù)據(jù)庫。促進(jìn)Internet發(fā)展的因素之一就是Web技術(shù)。由靜態(tài)網(wǎng)頁技術(shù)的HTML到動態(tài)網(wǎng)頁技術(shù)的CGI、ASP、PHP、JSP等,Web技術(shù)經(jīng)歷了一個(gè)重要的變革過程。Web已經(jīng)不再局限于僅僅由靜態(tài)網(wǎng)頁提供信息服務(wù),而改變?yōu)閯討B(tài)的網(wǎng)頁,可提供交互式的信息查詢服務(wù),使信息數(shù)據(jù)庫服務(wù)成為了可能。Web數(shù)據(jù)庫就是將數(shù)據(jù)庫技術(shù)與Web技術(shù)融合在一起,使數(shù)據(jù)庫系統(tǒng)成為Web的重要有機(jī)組成部分,從而實(shí)現(xiàn)數(shù)據(jù)庫與網(wǎng)絡(luò)技術(shù)的無縫結(jié)合。這一結(jié)合不僅把Web與數(shù)據(jù)庫的所有優(yōu)勢集合在了一起,而且充分利用了大量已有數(shù)據(jù)庫的信息資源。圖1-1是Web數(shù)據(jù)庫的基本結(jié)構(gòu)圖,它由數(shù)據(jù)庫服務(wù)器(Database Server)、中間件(Middle Ware)、Web服務(wù)器(Web Server)、瀏覽器(Browser)4部分組成。
Web數(shù)據(jù)庫的基本結(jié)構(gòu)
它的工作過程可簡單地描述成:用戶通過瀏覽器端的操作界面以交互的方式經(jīng)由Web服務(wù)器來訪問數(shù)據(jù)庫。用戶向數(shù)據(jù)庫提交的信息以及數(shù)據(jù)庫返回給用戶的信息都是以網(wǎng)頁的形式顯示。
1.1.1 Internet技術(shù)與相關(guān)協(xié)議
Internet技術(shù)在Web數(shù)據(jù)庫技術(shù)中扮演著重要的角色。Internet(因特網(wǎng))專指全球最大的、開放的、由眾多網(wǎng)絡(luò)相互連接而成的計(jì)算機(jī)網(wǎng)絡(luò),并通過各種協(xié)議在計(jì)算機(jī)網(wǎng)絡(luò)中傳遞信息。TCP/IP協(xié)議是Internet上使用的兩個(gè)最基本的協(xié)議。因此也可以說Internet是全球范圍的基于分組交換原理和TCP/IP協(xié)議的計(jì)算機(jī)網(wǎng)絡(luò)。它將信息進(jìn)行分組后,以數(shù)據(jù)包為單位進(jìn)行傳輸。Internet在進(jìn)行信息傳輸時(shí),主要完成兩項(xiàng)任務(wù)。
(1)正確地將源信息文件分割成一個(gè)個(gè)數(shù)據(jù)包,并能在目的地將源信息文件的數(shù)據(jù)包再準(zhǔn)確地重組起來。
(2)將數(shù)據(jù)包準(zhǔn)確地送往目的地。
TCP/IP協(xié)議的作用就是為了完成上述兩項(xiàng)任務(wù),規(guī)范了網(wǎng)絡(luò)上所有計(jì)算機(jī)之間數(shù)據(jù)傳遞的方式與數(shù)據(jù)格式,提供了數(shù)據(jù)打包和尋址的標(biāo)準(zhǔn)方法。
1.TCP/IP協(xié)議
TCP協(xié)議(Transmission Control Protocol,傳輸控制協(xié)議)規(guī)定了分割數(shù)據(jù)和重組數(shù)據(jù)所要遵循的規(guī)則和要進(jìn)行的操作。TCP協(xié)議能保證數(shù)據(jù)發(fā)送的正確性,如果發(fā)現(xiàn)數(shù)據(jù)有損失,TCP將重新發(fā)送數(shù)據(jù)。
2.IP協(xié)議
在Internet上傳送數(shù)據(jù)往往都是遠(yuǎn)距離的,因此在傳輸過程中要通過路由器一站一站的轉(zhuǎn)接來實(shí)現(xiàn)。路由器是一種特殊的計(jì)算機(jī),它會檢測數(shù)據(jù)包的目的地主機(jī)地址,然后決定將該數(shù)據(jù)包送往何處。IP協(xié)議(Internet Protocol,網(wǎng)際協(xié)議)給Internet中的每一臺計(jì)算機(jī)規(guī)定了一個(gè)地址,稱為IP地址。IP地址的標(biāo)準(zhǔn)是由4部分組成(例如202.112.203.11),其中前兩部分規(guī)定了當(dāng)前使用網(wǎng)絡(luò)的管理機(jī)構(gòu),第3部分規(guī)定了當(dāng)前使用的網(wǎng)絡(luò)地址,第4部分規(guī)定了當(dāng)前使用的計(jì)算機(jī)地址。
Internet上提供的主要服務(wù)有E-mail、FTP、BBS、Telnet、WWW等。其中WWW(World Wide Web,萬維網(wǎng))由于其豐富的信息資源而成為Internet最為重要的服務(wù)。
3.HTTP協(xié)議
HTTP協(xié)議(Hypertext Transfer Protocol,超文本傳輸協(xié)議)應(yīng)用在WWW上,其作用是完成客戶端瀏覽器與Web服務(wù)器端之間的HTML數(shù)據(jù)傳輸。
1.1.2 Web的工作原理與工作步驟
萬維網(wǎng)簡稱為Web。Web可以描述為在Internet上運(yùn)行的、全球的、交互的、動態(tài)的、跨平臺的、分布式的、圖形化的超文本信息系統(tǒng)。
1.Web的工作原理
Web是伴隨著Internet技術(shù)而產(chǎn)生的。在計(jì)算機(jī)網(wǎng)絡(luò)中,對于提供Web服務(wù)的計(jì)算機(jī)稱為Web服務(wù)器。Web采用瀏覽器/服務(wù)器的工作方式。每個(gè)Web服務(wù)器上都放置著大量的Web信息。Web信息的基本單位是Web頁(網(wǎng)頁),多個(gè)網(wǎng)頁組成了一個(gè)Web節(jié)點(diǎn)。每個(gè)Web節(jié)點(diǎn)的起始頁稱為“主頁”,且擁有一個(gè)URL地址(統(tǒng)一資源定位地址)。Web節(jié)點(diǎn)之間及網(wǎng)頁之間都是以超文本結(jié)構(gòu)(非線性的網(wǎng)狀結(jié)構(gòu))來進(jìn)行組織的。
2.Web的工作步驟
Web的工作步驟如下。
(1)用戶打開客戶端計(jì)算機(jī)中的瀏覽器軟件(例如Internet Explorer)。
(2)用戶輸入要啟動的Web主頁的URL地址,瀏覽器將生成一個(gè)HTTP請求。
(3)瀏覽器連接到指定的Web服務(wù)器,并發(fā)送HTTP請求。
(4)Web服務(wù)器接到HTTP請求,根據(jù)請求的內(nèi)容不同作相應(yīng)的處理,再將網(wǎng)頁以HTML文件格式發(fā)回給瀏覽器。
(5)瀏覽器將網(wǎng)頁顯示到屏幕上.
圖1-2 Web的工作步驟
1.1.3 WWW世界中的標(biāo)記語言
1.HTML語言
HTML(Hypertext Markup Language,超文本標(biāo)記語言)是創(chuàng)建網(wǎng)頁的計(jì)算機(jī)語言。所謂網(wǎng)頁實(shí)際上就是一個(gè)HTML文檔。文檔內(nèi)容由文本和HTML標(biāo)記組成。HTML文檔的擴(kuò)展名就是.html或.htm。瀏覽器負(fù)責(zé)解釋HTML文檔中的標(biāo)記,并將HTML文檔顯示成網(wǎng)頁。
(1)HTML標(biāo)記
HTML標(biāo)記的作用是告訴瀏覽器網(wǎng)頁的結(jié)構(gòu)和格式。每一個(gè)標(biāo)記用尖括號括起來。大多數(shù)標(biāo)記都有一個(gè)開始標(biāo)記和一個(gè)結(jié)束標(biāo)記。標(biāo)記不分大小寫。多數(shù)標(biāo)記都帶有自己的屬性。例如字體標(biāo)記FONT有FACE、COLOR、SIZE等屬性:FACE定義字體;COLOR定義字體的顏色;SIZE定義字體的大小。
使用格式:FONT FACE= SONG SIZE=3 COLOR=RED BEIJING /FONT。
網(wǎng)頁中有很多文本鏈接和圖片鏈接。鏈接,又被稱為超鏈接,用于鏈接到WWW萬維網(wǎng)中的其他網(wǎng)頁上。在HTML文檔中表示超鏈接的標(biāo)記是A,通過屬性HREF指出鏈接的網(wǎng)頁地址URL。
使用格式:A HREF= BEIJING /A。
(2)HTML程序
HTML程序必須以HTML標(biāo)記開始,以/HTML標(biāo)記結(jié)束。在HTML和/HTML標(biāo)記之間主要由兩部分組成:文件頭和文件體。文件頭用標(biāo)記HEAD /HEAD來標(biāo)識,文件體用標(biāo)記BODY/BODY來標(biāo)識。在文件的頭部通常包含整個(gè)網(wǎng)頁的一些信息。例如TITLE/TITLE標(biāo)記是用來說明網(wǎng)頁的名稱;META/META標(biāo)記是用來說明網(wǎng)頁的其他信息,如設(shè)計(jì)者姓名和版權(quán)信息等。所有在瀏覽器中要顯示的內(nèi)容稱為網(wǎng)頁的主體,必須放在BODY/BODY標(biāo)記中。下面給出的是一個(gè)空網(wǎng)頁的HTML程序。
HTML
HEAD
TITLE(在此標(biāo)記中寫網(wǎng)頁的標(biāo)題)/TITLE
/HEAD
BODY
(在此標(biāo)記中寫網(wǎng)頁的內(nèi)容)
/BODY
/HTML
(3)HTML規(guī)范
HTML規(guī)范又稱為HTML標(biāo)準(zhǔn),它總在不斷地發(fā)展。每一新版本的出現(xiàn),HTML都會增加新的特性和內(nèi)容。有關(guān)HTML版本的詳細(xì)信息請?jiān)L問網(wǎng)站。
在不同的瀏覽器中,網(wǎng)頁的顯示效果可能會有所不同。每一個(gè)瀏覽器都使用自己獨(dú)特的方式解釋HTML文檔中的標(biāo)記,并且多數(shù)瀏覽器不完全支持HTML的所有特性。因?yàn)?,像Microsoft和Netscape公司在HTML標(biāo)準(zhǔn)上又開發(fā)了一些特有的HTML標(biāo)記和屬性,稱之為HTML的擴(kuò)展。這些標(biāo)記和屬性只被他們自己的瀏覽器所識別,不可能被其他公司的瀏覽器識別。如果瀏覽器不能識別HTML文檔中的標(biāo)記,則會忽略這個(gè)標(biāo)記。
(4)HTML程序的編輯環(huán)境與運(yùn)行環(huán)境
HTML文檔是一個(gè)普通的文本文件(ASCII),不包含任何與平臺、程序有關(guān)的信息。因此HTML文檔可以利用任何文本編輯器來方便地生成。要注意的是HTML文檔的擴(kuò)展名必須是.html或.htm。運(yùn)行HTML文檔可以在任何瀏覽器下進(jìn)行,并可在瀏覽器上查看網(wǎng)頁的HTML源代碼。
關(guān)于HTML語言中標(biāo)記的種類與使用方法將會在第5章中更詳細(xì)地進(jìn)行介紹。
2.可擴(kuò)展標(biāo)記語言(XML)
HTML是Web上的通用語言,隨著Internet的深入人心,WWW上的Web文件日益復(fù)雜化、多樣化,人們開始感到了HTML這種固定格式的標(biāo)記語言的不足。1996年W3C開始對HTML的后續(xù)語言進(jìn)行研究,并于1998年正式推出了XML(Extensible Markup Language,可擴(kuò)展標(biāo)記語言)。在設(shè)計(jì)網(wǎng)頁時(shí),XML提供了比HTML更靈活的方法。
(1)XML語言的特點(diǎn)
XML是國際組織W3C為適應(yīng)WWW的應(yīng)用,將SGML (Standard Generalized Markup Language)標(biāo)準(zhǔn)進(jìn)行簡化形成的元標(biāo)記語言。簡單地說,XML是使用標(biāo)記來描述內(nèi)容或與內(nèi)容相關(guān)的形式信息的通用語言。一個(gè)XML文檔由標(biāo)記和字符數(shù)據(jù)組成。
而作為元標(biāo)記語言,XML不再使標(biāo)記固定,允許網(wǎng)頁的設(shè)計(jì)者定義數(shù)量不限的標(biāo)記來描述內(nèi)容,同時(shí)還允許設(shè)計(jì)者創(chuàng)建自己的使用規(guī)則。
(2)XML的DTD
DTD(Document Type Definition,文檔類型定義)是一組應(yīng)用在XML文檔中的自定義標(biāo)記語言的技術(shù)規(guī)范。DTD中定義了標(biāo)記的含義及關(guān)于標(biāo)記的語法規(guī)則。語法規(guī)則中確定了在XML文檔中使用哪些標(biāo)記符,它們應(yīng)該按什么次序出現(xiàn),標(biāo)記符之間如何 嵌套,哪些標(biāo)記符有屬性等等。DTD可以包含在它所描述的XML文檔中,但通常它是一份單獨(dú)的文檔或者一系列文檔。作為外部文件可通過URL鏈接,被不同的XML文檔 共享。
XML把DTD的定義權(quán)開放,不同行業(yè)可以根據(jù)自己的實(shí)際需求定義描述內(nèi)容的DTD,以適應(yīng)本行業(yè)內(nèi)部的信息交流和存檔需要。因此,適合于不同行業(yè)、不同平臺的標(biāo)記語言大批涌現(xiàn)。
(3)XML的CSS與XSL
強(qiáng)調(diào)內(nèi)容描述與形式描述的分離,一方面可以使XML文件的編寫者更集中精力于數(shù)據(jù)本身,而不受顯示方式的細(xì)節(jié)影響;另一方面允許為相同的數(shù)據(jù)定義不同的顯示方式,從而適合于不同應(yīng)用、不同媒體,使XML數(shù)據(jù)得到最大程度的重用。XML文檔數(shù)據(jù)的顯示形式是通過樣式單定義的。CSS(Cascading Style Sheets)是XML使用的一種標(biāo)準(zhǔn)的級聯(lián)樣式單,XSL(Extensible Style Language)則是可擴(kuò)展的樣式語言。
由于XML允許用戶創(chuàng)建任何所需的標(biāo)記,而通用瀏覽器卻既無法預(yù)期用戶標(biāo)記的意義,又無法為顯示這些標(biāo)記而提供規(guī)則,因此用戶必須為自己創(chuàng)建的XML文檔編寫樣式單,樣式單可以實(shí)現(xiàn)共享。
瀏覽器對一個(gè)XML文檔的處理過程是,首先去關(guān)聯(lián)它所指定的樣式單文件,如果該樣式單是一個(gè)XSL文件,則按照規(guī)定對XML數(shù)據(jù)進(jìn)行轉(zhuǎn)換然后再顯示,XSL本身也是基于XML語言的,可以將XML轉(zhuǎn)化為HTML后再顯示。如果該樣式單是一個(gè)CSS文件,瀏覽器就會按照樣式單的規(guī)定給每個(gè)標(biāo)記賦予一組樣式后再顯示。
1.2 Web數(shù)據(jù)庫訪問技術(shù)
Web數(shù)據(jù)庫訪問技術(shù)通常是通過三層結(jié)構(gòu)來實(shí)現(xiàn)的,如圖1-3所示。目前建立與Web數(shù)據(jù)庫連接訪問的技術(shù)方法可歸納為CGI技術(shù),ODBC技術(shù)和ASP、JSP、PHP 技術(shù)。
Web數(shù)據(jù)庫訪問的三層結(jié)構(gòu)
1.2.1 CGI技術(shù)
CGI(Common Cateway Interface,通用網(wǎng)關(guān)界面)是一種Web服務(wù)器上運(yùn)行的基于Web瀏覽器輸入程序的方法,是最早的訪問數(shù)據(jù)庫的解決方案。CGI程序可以建立網(wǎng)頁與數(shù)據(jù)庫之間的連接,將用戶的查詢要求轉(zhuǎn)換成數(shù)據(jù)庫的查詢命令,然后將查詢結(jié)果通過網(wǎng)頁返回給用戶。一個(gè)CGI工作的基本原理如圖1-4所示。
CGI程序需要通過一個(gè)接口才能訪問數(shù)據(jù)庫。這種接口多種多樣,數(shù)據(jù)庫系統(tǒng)對CGI程序提供了各種數(shù)據(jù)庫接口如Perl、C/C++、VB等。為了使用各種數(shù)據(jù)庫系統(tǒng),CGI程序支持ODBC方式,通過ODBC接口訪問數(shù)據(jù)庫。
CGI工作流程
1.2.2 ODBC技術(shù)
ODBC(Open Database Connectivity,開放數(shù)據(jù)庫互接)是一種使用SQL的應(yīng)用程序接口(API)。ODBC最顯著的優(yōu)點(diǎn)就是它生成的程序與數(shù)據(jù)庫系統(tǒng)無關(guān),為程序員方便地編寫訪問各種DBMS的數(shù)據(jù)庫應(yīng)用程序提供了一個(gè)統(tǒng)一接口,使應(yīng)用程序和數(shù)據(jù)庫源之間完成數(shù)據(jù)交換。ODBC的內(nèi)部結(jié)構(gòu)為4層:應(yīng)用程序?qū)印Ⅱ?qū)動程序管理器層、驅(qū)動程序?qū)印?shù)據(jù)源層。它們之間的關(guān)系如圖1-5所示。由于ODBC適用于不同的數(shù)據(jù)庫產(chǎn)品,因此許多服務(wù)器擴(kuò)展程序都使用了包含ODBC層的系統(tǒng)結(jié)構(gòu)。
ODBC的內(nèi)部結(jié)構(gòu)
Web服務(wù)器通過ODBC數(shù)據(jù)庫驅(qū)動程序向數(shù)據(jù)庫系統(tǒng)發(fā)出SQL請求,數(shù)據(jù)庫系統(tǒng)接收到的是標(biāo)準(zhǔn)SQL查詢語句,并將執(zhí)行后的查詢結(jié)果再通過ODBC傳回Web服務(wù)器,Web服務(wù)器將結(jié)果以HTML網(wǎng)頁傳給Web瀏覽器,工作原理如圖1-6所示。
Web服務(wù)器通過ODBC訪問數(shù)據(jù)庫
由于Java語言所顯示出來的編程優(yōu)勢贏得了眾多數(shù)據(jù)庫廠商的支持。在數(shù)據(jù)庫處理方面,Java提供的JDBC為數(shù)據(jù)庫開發(fā)應(yīng)用提供了標(biāo)準(zhǔn)的應(yīng)用程序編程接口。與ODBC類似,JDBC也是一種特殊的API,是用于執(zhí)行SQL語句的Java應(yīng)用程序接口。它規(guī)定了Java如何與數(shù)據(jù)庫之間交換數(shù)據(jù)的方法。采用Java和JDBC編寫的數(shù)據(jù)庫應(yīng)用程序具有與平臺無關(guān)的特性。
1.2.3 ASP、JSP、PHP技術(shù)
ASP是Microsoft開發(fā)的動態(tài)網(wǎng)頁技術(shù),主要應(yīng)用于Windows NT+IIS或 Windows 9x+PWS平臺。確切地說ASP不是一種語言,而是Web服務(wù)器端的開發(fā)環(huán)境。利用ASP可以產(chǎn)生和運(yùn)行動態(tài)的、交互的、高性能的Web服務(wù)應(yīng)用程序。ASP支持多種腳本語言,除了VBScript和Pscript,也支持Perl語言,并且可以在同一ASP文件中使用多種腳本語言以發(fā)揮各種腳本語言的最大優(yōu)勢。但ASP默認(rèn)只支持VBScript和Pscript,若要使用其他腳本語言,必須安裝相應(yīng)的腳本引擎。ASP支持在服務(wù)器端調(diào)用ActiveX組件ADO對象實(shí)現(xiàn)對數(shù)據(jù)庫的操作。在具體的應(yīng)用中,若腳本語言中有訪問數(shù)據(jù)庫的請求,可通過ODBC與后臺數(shù)據(jù)庫相連,并通過ADO執(zhí)行訪問庫的操作。關(guān)于ASP的編程技術(shù)將會在第7章中詳細(xì)介紹。
JSP是Sun公司推出的新一代Web開發(fā)技術(shù)。作為Java家族的一員,幾乎可以運(yùn)行在所有的操作系統(tǒng)平臺和Web服務(wù)器上,因此JSP的運(yùn)行平臺更為廣泛。目前JSP支持的腳本語言只有Java。JSP使用JDBC實(shí)現(xiàn)對數(shù)據(jù)庫的訪問。目標(biāo)數(shù)據(jù)庫必須有一個(gè)JDBC的驅(qū)動程序,即一個(gè)從數(shù)據(jù)庫到Java的接口,該接口提供了標(biāo)準(zhǔn)的方法使Java應(yīng)用程序能夠連接到數(shù)據(jù)庫并執(zhí)行對數(shù)據(jù)庫的操作。JDBC不需要在服務(wù)器上創(chuàng)建數(shù)據(jù)源,通過JDBC、JSP就可以實(shí)現(xiàn)SQL語句的執(zhí)行。
PHP是Rasmus Lerdorf推出的一種跨平臺的嵌入式腳本語言,可以在Windows、UNIX、Linux等流行的操作系統(tǒng)和IIS、Apache、Netscape等Web服務(wù)器上運(yùn)行,用戶更換平臺時(shí),無需變換PHP代碼。PHP是通過Internet合作開發(fā)的開放源代碼軟件,它借用了C、Java、Perl語言的語法并結(jié)合PHP自身的特性,能夠快速寫出動態(tài)生成頁面。PHP可以通過ODBC訪問各種數(shù)據(jù)庫,但主要通過函數(shù)直接訪問數(shù)據(jù)庫。PHP支持目前絕大多數(shù)的數(shù)據(jù)庫,提供許多與各類數(shù)據(jù)庫直接互連的函數(shù),包括Sybase、Oracle、SQL Server等,其中與SQL Server數(shù)據(jù)庫互連是最佳組合。
1.3 網(wǎng)絡(luò)數(shù)據(jù)庫應(yīng)用系統(tǒng)的層次體系
當(dāng)前,Internet/Intranet技術(shù)發(fā)展異常迅速,越來越多的數(shù)據(jù)庫應(yīng)用軟件運(yùn)行在Internet/Intranet環(huán)境下。在此之前,數(shù)據(jù)庫應(yīng)用系統(tǒng)的發(fā)展經(jīng)歷了單機(jī)結(jié)構(gòu)、集中式結(jié)構(gòu)、客戶機(jī)/服務(wù)器(C/S)結(jié)構(gòu)之后,隨著Internet的普及,又出現(xiàn)了瀏覽器/服務(wù)器(B/S)結(jié)構(gòu)與多層結(jié)構(gòu)。在構(gòu)造一個(gè)應(yīng)用系統(tǒng)時(shí),首先考慮的是系統(tǒng)的體系結(jié)構(gòu),采用哪種結(jié)構(gòu)取決于系統(tǒng)的網(wǎng)絡(luò)環(huán)境、應(yīng)用需求等因素。
1.3.1 客戶機(jī)/服務(wù)器結(jié)構(gòu)
1.二層C/S結(jié)構(gòu)
二層C/S結(jié)構(gòu)是當(dāng)前非常流行的數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu),在這種結(jié)構(gòu)中,客戶機(jī)提出請求,服務(wù)器對客戶機(jī)的服務(wù)請求做出回答。它把界面和數(shù)據(jù)處理操作分開在前端(客戶端)和后端(服務(wù)器端),這個(gè)主要特點(diǎn)使得C/S系統(tǒng)的工作速度主要取決于進(jìn)行大量數(shù)據(jù)操作的服務(wù)器,而不是前端的硬件設(shè)備;同時(shí)也大大降低了對網(wǎng)絡(luò)傳輸速度的要求,因?yàn)橹豁毧蛻舳税逊?wù)請求發(fā)送給數(shù)據(jù)庫服務(wù)器,數(shù)據(jù)庫服務(wù)器只把服務(wù)結(jié)果傳回前端,如圖1-7所示。
在設(shè)計(jì)時(shí),對數(shù)據(jù)可能有如下不同的處理形式。
(1)在處理時(shí),客戶機(jī)先向服務(wù)器索取數(shù)據(jù),然后釋放數(shù)據(jù)庫,即客戶機(jī)發(fā)出的是文件請求,在客戶機(jī)端處理數(shù)據(jù),最后將結(jié)果送回服務(wù)器。這種處理方式的缺點(diǎn)很明顯:所有的應(yīng)用處理都在客戶端完成,這就要求客戶端的計(jì)算機(jī)必須有足夠的能力,以便執(zhí)行需要的任何程序。更為糟糕的是,由于所有的處理均在客戶端完成,每次運(yùn)行時(shí)都要將文件整體傳送到客戶端,然后才能執(zhí)行。如:Student表中有30 000條記錄,客戶端發(fā)出命令:
Select * From Student Where Sno='200101'
這條命令將要求服務(wù)器將Student表中的所有記錄傳送到客戶端,然后在客戶端執(zhí)行查詢,結(jié)果只用到一條記錄;如果查詢的記錄不存在,網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)實(shí)際上是無 用的。如此大的數(shù)據(jù)傳輸量是不可想象的。因此,人們提出了在服務(wù)器中能夠執(zhí)行部分代碼的客戶機(jī)/服務(wù)器結(jié)構(gòu)。
(2)在處理時(shí),客戶機(jī)接受用戶要求,并發(fā)給服務(wù)器;在服務(wù)器端處理用戶要求,最后將結(jié)果傳回客戶機(jī)顯示或打印。這種處理方式網(wǎng)絡(luò)通信量較小。客戶機(jī)向服務(wù)器發(fā)出的是處理請求,而不是文件請求,處理請求中的代碼在服務(wù)器端執(zhí)行后向客戶機(jī)傳送處理后的結(jié)果。
這樣,為了特定任務(wù),客戶機(jī)上的程序和服務(wù)器上的程序協(xié)同工作:客戶機(jī)端的代碼用于完成用戶的輸入輸出及數(shù)據(jù)的檢查,而服務(wù)器端的代碼完成對數(shù)據(jù)庫的操作。
客戶機(jī)/服務(wù)器結(jié)構(gòu)的另一個(gè)主要特點(diǎn)在于軟件、硬件平臺的無關(guān)性。數(shù)據(jù)庫服務(wù)器上的數(shù)據(jù)庫管理系統(tǒng)集中負(fù)責(zé)管理數(shù)據(jù),它向客戶端提供一個(gè)開放的使用環(huán)境,客戶端通過數(shù)據(jù)庫接口,如ODBC(開放數(shù)據(jù)庫連接)和SQL語言訪問數(shù)據(jù)庫,也就是說,不管客戶端采用什么樣的硬件和軟件,它只要能夠通過網(wǎng)絡(luò)和數(shù)據(jù)庫接口程序連接到服務(wù)器,就可對數(shù)據(jù)庫進(jìn)行訪問。
在客戶機(jī)/服務(wù)器結(jié)構(gòu)中,常把客戶機(jī)稱為前臺,而把服務(wù)器端稱為后臺。前臺應(yīng)用程序的功能包括用戶界面、接收用戶數(shù)據(jù)、處理應(yīng)用邏輯、向后臺發(fā)出請求、同時(shí)接收后臺返回的結(jié)果,最后再將返回的結(jié)果按一定的格式或方式顯示給用戶。而后臺服務(wù)器則負(fù)責(zé)共享外部設(shè)備、存取共享數(shù)據(jù)、響應(yīng)前臺客戶端的請求并回送結(jié)果等工作。前臺的應(yīng)用程序和數(shù)據(jù)一般是用戶專用的,而后臺的數(shù)據(jù)和代碼是所有用戶可以共享的。
由于數(shù)據(jù)庫服務(wù)器不僅要管理共享數(shù)據(jù),保證數(shù)據(jù)的完整性,還要執(zhí)行一部分代碼,完成客戶端的一些處理請求,所以對用于服務(wù)器的計(jì)算機(jī)提出較高的要求。最好要采用一臺專用的服務(wù)器,有較快的處理速度,有大容量的硬盤和內(nèi)存,支持磁帶等大容量的存儲設(shè)備。
上面講的客戶機(jī)/服務(wù)器結(jié)構(gòu)將應(yīng)用分在了客戶機(jī)、服務(wù)器兩級,稱其為兩層客戶機(jī)/ 服務(wù)器結(jié)構(gòu)??傊?,兩層C/S結(jié)構(gòu)的基本工作方式是客戶程序向數(shù)據(jù)庫服務(wù)器發(fā)送SQL請求,服務(wù)器返回?cái)?shù)據(jù)或結(jié)果。
這種C/S結(jié)構(gòu)有兩種實(shí)現(xiàn)方式,一種是客戶來完成表示部分和應(yīng)用邏輯部分,而服務(wù)器完成數(shù)據(jù)訪問部分,這種情況是以客戶為中心的,適用于應(yīng)用相對簡單、數(shù)據(jù)訪問量不是很大的情況。另一種是以服務(wù)器為中心的,把一些重要的應(yīng)用邏輯部分放到服務(wù)器上,這樣可充分利用服務(wù)器的計(jì)算能力,減少網(wǎng)絡(luò)上需要傳送的數(shù)據(jù)。通常以存儲過程和觸發(fā)器的形式出現(xiàn),但存儲過程都依賴于特定數(shù)據(jù)庫,不同數(shù)據(jù)庫之間很難移植,而三層C/S結(jié)構(gòu)可以很好地解決這個(gè)問題。
注意:觸發(fā)器(trigger)是數(shù)據(jù)庫系統(tǒng)中,一個(gè)在插入、刪除、修改操作之后運(yùn)行的記錄級事件代碼。不同的事件可以對應(yīng)不同的動作。通常有3種類型的觸發(fā)器:INSERT觸發(fā)器、DELETE觸發(fā)器和UPDATE觸發(fā)器。
2.三層C/S結(jié)構(gòu)
由于兩層結(jié)構(gòu)的客戶機(jī)/服務(wù)器系統(tǒng)本身固有的缺陷,使得它不能應(yīng)用于一些大型、結(jié)構(gòu)較為復(fù)雜的系統(tǒng)中,故出現(xiàn)了3層結(jié)構(gòu)的客戶機(jī)/服務(wù)器系統(tǒng),將兩層結(jié)構(gòu)中服務(wù)器部分和客戶端部分的應(yīng)用單獨(dú)劃分出來,即采用“客戶機(jī)—應(yīng)用服務(wù)器—數(shù)據(jù)庫服務(wù)器”結(jié)構(gòu)(如圖1-8所示)。典型的數(shù)據(jù)庫應(yīng)用可分為三部分:表示部分、應(yīng)用邏輯(商業(yè)邏輯)部分和數(shù)據(jù)訪問部分,三層結(jié)構(gòu)便是對應(yīng)于這三部分。
圖1-8 三層C/S結(jié)構(gòu)
其中,應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器可位于同一主機(jī),也可位于不同主機(jī)??蛻魴C(jī)是應(yīng)用的用戶接口部分,負(fù)責(zé)用戶與應(yīng)用程序的交互,運(yùn)行在客戶機(jī)端的軟件也稱為表示層軟件。應(yīng)用服務(wù)器存放業(yè)務(wù)邏輯層(也稱為功能層)軟件,是應(yīng)用邏輯處理的核心,實(shí)現(xiàn)具體業(yè)務(wù)。它能響應(yīng)客戶機(jī)請求,完成業(yè)務(wù)處理或復(fù)雜計(jì)算。若有數(shù)據(jù)庫訪問任務(wù)時(shí),應(yīng)用服務(wù)器層可根據(jù)客戶機(jī)的要求向數(shù)據(jù)庫服務(wù)器發(fā)送SQL指令。應(yīng)用邏輯變得復(fù)雜或增加新的應(yīng)用時(shí),可增加新的應(yīng)用服務(wù)器。數(shù)據(jù)庫服務(wù)器便是用來執(zhí)行功能層送來的SQL指令,完成數(shù)據(jù)的存儲、訪問和完整性約束等。操作完成后再通過應(yīng)用服務(wù)器向客戶機(jī)返回操作結(jié)果。
1.3.2 瀏覽器/服務(wù)器結(jié)構(gòu)
隨著Internet技術(shù)和Web技術(shù)的廣泛應(yīng)用,C/S結(jié)構(gòu)已無法滿足人們的需要。因?yàn)樵诘湫虲/S體系中,通常為客戶安裝前端應(yīng)用程序的做法已不再現(xiàn)實(shí),并且限制客戶端工作環(huán)境只能基于Windows、Macintosh或UNIX等操作系統(tǒng)也不切實(shí)際。于是基于瀏覽器/服務(wù)器結(jié)構(gòu)(Browser/Server)的系統(tǒng)應(yīng)運(yùn)而生。
采用B/S結(jié)構(gòu)后,在客戶端只需安裝一個(gè)通用的瀏覽器即可,不再受具體操作系統(tǒng)和硬件的制約,實(shí)現(xiàn)了跨平臺的應(yīng)用。
基于B/S結(jié)構(gòu)的典型應(yīng)用通常采用三層結(jié)構(gòu):“瀏覽器—Web服務(wù)器—數(shù)據(jù)庫服務(wù)器”,B/S模式的工作原理是:通過瀏覽器以超文本的形式向Web服務(wù)器提出訪問數(shù)據(jù)庫的請求,Web服務(wù)器接受客戶請求后,激活對應(yīng)的CGI程序?qū)⒊谋綡TML語言轉(zhuǎn)化為SQL語法,將這個(gè)請求交給數(shù)據(jù)庫,數(shù)據(jù)庫服務(wù)器得到請求后,進(jìn)行數(shù)據(jù)處理,然后將處理結(jié)果集返回給CGI程序。CGI再將結(jié)果轉(zhuǎn)化為HTML,并由Web服務(wù)器轉(zhuǎn)發(fā)給請求方的瀏覽器,如圖1-9所示。
圖1-9 B/S工作原理
在B/S模式中,客戶端的標(biāo)準(zhǔn)配置是瀏覽器,如IE;業(yè)務(wù)功能處理由獨(dú)立的應(yīng)用服務(wù)器處理,Web服務(wù)器成為應(yīng)用處理的標(biāo)準(zhǔn)配置;數(shù)據(jù)處理仍然由數(shù)據(jù)庫服務(wù)器處理。
從本質(zhì)上講,B/S結(jié)構(gòu)與傳統(tǒng)的C/S結(jié)構(gòu)都是以同一種請求和應(yīng)答方式來執(zhí)行應(yīng)用的,區(qū)別主要在于:C/S是一種兩層或三層結(jié)構(gòu)模式,其客戶端集中了大量應(yīng)用軟件,而B/S是一種基于超鏈接(HyperLink)、HTML、Java的三級或多級C/S結(jié)構(gòu),客戶端僅需單一的瀏覽器軟件,是一種全新的體系結(jié)構(gòu),解決了跨平臺問題。到目前,這兩種結(jié)構(gòu)在不同方面都有著廣泛的應(yīng)用。雖然C/S結(jié)構(gòu)在Internet環(huán)境下明顯不如B/S結(jié)構(gòu)具有優(yōu)勢,但它在局域網(wǎng)環(huán)境下仍具有優(yōu)勢。
1.3.3 Internet/Intranet信息系統(tǒng)的多層體系結(jié)構(gòu)
多層結(jié)構(gòu)應(yīng)用軟件與傳統(tǒng)的兩層結(jié)構(gòu)應(yīng)用軟件相比,有可伸縮性好、可管理性強(qiáng)、安全性高、軟件重用性好等諸多優(yōu)點(diǎn),如何在Internet/Intranet環(huán)境下構(gòu)建應(yīng)用軟件體系結(jié)構(gòu)就成為一個(gè)非常重要的問題,也是現(xiàn)今軟件體系研究的一個(gè)新熱點(diǎn)。
目前各種技術(shù)層出不窮,如最初的靜態(tài)HTML頁面、簡單的CGI網(wǎng)關(guān)程序、Java Applet程序,現(xiàn)在的ASP等Web數(shù)據(jù)庫技術(shù),還有動態(tài)的Java在線游戲及PHP技術(shù)等。
實(shí)際上,多層的概念是由Sun公司提出來的。Sun公司提出的多層應(yīng)用體系包括4層:客戶層、頂端Web服務(wù)層、應(yīng)用服務(wù)層和數(shù)據(jù)庫層。其中頂端Web服務(wù)層是Sun公司多層體系結(jié)構(gòu)中非常重要的一層,它主要起代理和緩存的作用。頂端Web服務(wù)器的作用是緩存本地各客戶機(jī)經(jīng)常使用的Java Applet程序和靜態(tài)數(shù)據(jù),通常被放置在客戶機(jī)所在的局域網(wǎng)內(nèi),起到一個(gè)Java Applet主機(jī)(向Web瀏覽器傳送Java Applet程序的計(jì)算機(jī))和訪問其他服務(wù)的代理作用。與普通代理服務(wù)器的作用相同。構(gòu)建多層結(jié)構(gòu)應(yīng)用軟件時(shí),選用Java平臺是一個(gè)很好的選擇,因?yàn)樗缭礁鲬?yīng)用平臺??傊?,在Java平臺上構(gòu)建多層應(yīng)用軟件體系代表著今后Internet/Intranet應(yīng)用的趨勢。
本文名稱:php與數(shù)據(jù)庫交互論文 PHP畢業(yè)論文
當(dāng)前路徑:http://www.dlmjj.cn/article/docdcpi.html