Web 服務原理
.1 Web 概述
圖 1-1
- Web(World Wide Web)即全球廣域網,也稱為萬維網,它是一種基于超文本和 HTTP 的、全球性的、動態交互的、跨平臺的分布式圖形信息系統。是建立在 Internet 上的一種網絡服務,為瀏覽者在 Internet 上查找和瀏覽信息提供了圖形化的、易于訪問的直觀界面,其中的文檔及超級鏈接將 Internet上 的信息節點組織成一個互為關聯的網狀結構。
- 我們通常所說的 WWW 服務、Web 服務,其實是一個意思,泛指通過 HTTP 協議傳輸,使用圖形化界面來展示信息的一種方式。也就是俗稱的網站或者網頁
Web 相關概念
- 網頁(Web 頁面):網頁,是網站中的一個頁面,通常是網頁是構成網站的基本元素,是承載各種網站應用的平臺。通俗的說,網站就是由網頁組成的。
- 網站(WebSite):網站,指根據一定的規則,使用 HTML 等工具制作的用于展示特定內容的相關網頁的集合。簡單地說,網站是一種通訊工具,就像布告欄一樣,人們可以通過網站來發布或收集信息。網站就是一組相同所屬的網頁的集合
- HTML(超文本標記語言):“超文本” 就是指頁面文本內可以包含圖片、鏈接,甚至音樂、程序等非文字元素。是一種規范,一種標準,超文本標記語言通過標記符號來標記要顯示的網頁中的各個部分網頁的本質是使用 HTML 語言編寫代碼所產生的文件
- 靜態網頁:指純 HTML 語言編寫,呈現的內容固定化的 Web 頁面靜態網頁所呈現的所有內容都編寫在源文件中,更改內容只能修改源代碼
- 動態網頁:除了 HTML,還使用相應的動態程序序言編寫的 Web 頁面動態網頁中呈現的內容一般存儲在數據庫中,通過程序語言來調用數據
- HTTP(超文本傳輸協議):用于發布和接收 HTML 頁面的協議,定義了 Web 客戶端和服務器端的請求和應答標準默認工作在 TCP 80 端口
- HTTPS(HTTP over SSL)基于 SSL 的 HTTP 協議,使用 SSL 協議來保護 HTTP 傳輸,使 HTTP 協議更加安全
- 瀏覽器(Browser):可以接收并解析 HTML 語言,使 HTML 能夠圖形化顯示,并與 Web 服務器進行交互的應用程序
3.2. Web 服務組件
圖 1-2
如圖 1-2,要構建一個網站,一般需要具備 Web 服務系統、Web 服務軟件、Web 開發語言、數據庫這四個組件。這只是比較概括性的劃分了 Web 服務的組件,如果要細分的話,還可以細分為操作系統、存儲(Web 源文件和數據庫)、Web 容器、中間件、Web 服務端語言、Web 開發框架、Web 應用、Web 前端框架、第三方內容等組件。本課程內容不關注 Web 的搭建和優化,所以只按照圖示組件講解
3.2.1 Web 服務系統
Web 作為網絡服務,必然需要基于操作系統來運行和工作,這里的 Web 服務系統指的就是 Web 服務運行在哪種操作系統上
- Windows作為使用最廣泛的電腦端操作系統,Windows 無疑是良好的運行 Web 服務的操作系統平臺。無論是桌面版的 Windows,還是 Server 版的 Windows,都具備運行 Web 服務的能力,但生產環境中的 Web 服務更多的會選擇 Server 版的 Windows,如 Windows Server 2003、Windows Server 2008、Windows Server 2012 等Windows 擁有優秀的圖形化界面處理能力,也成為了眾多 Web 初學者入門會選擇的操作系統
- LinuxServer 端的操作系統,無疑是 Linux 的天下。基于開源、高效、安全等優點,Linux 成為了生產環境中搭建 Web 服務的首選操作系統常見的有 CentOS、RatHat、Ubuntu,互聯網中幾乎 99% 的 Web 服務都運行在 Linux 系統之上
3.2.2 Web 服務軟件
Web 服務軟件指 Web 服務器,也稱為 HTTP 服務器,是響應來自瀏覽器的 HTTP 請求,并且發送出網頁文件的 Web 服務端軟件。 想要把自己的網站發布到網絡中讓用戶可以訪問,就需要 Web 服務軟件來搭建網站
IIS(Internet Information Service)
圖 2-1
- IIS 是微軟在 Windows 操作系統中自帶的 Internet 服務器軟件,提供包括 Web、FTP、SMTP 等服務器功能,IIS 也只能運行在 Windows 中
- IIS 在幾乎所有版本的 Windows 中都自帶了,無需獨立下載,全圖形化界面操作,繼承了 Windows 的操作風格,使用非常簡單便捷
- IIS 支持發布靜態網站,以及 ASP、ASP.NET 的動態網站,使用相應中間件還可以支持發布 PHP 的動態網站
- IIS 在安全性上一直被業界所詬病,著名的 IIS 6.0 版本中的文件解析漏洞可以讓黑客非常輕松的繞過網站限制,上傳 WebShell,來獲得系統權限。直到 IIS 7.5 版本以后情況才有所好轉
Apache
圖 2-2
- Apache 是世界使用排名第一的 Web 服務器軟件。它可以運行在幾乎所有廣泛使用的計算機平臺上,由于其跨平臺和安全性被廣泛使用,是最流行的 Web 服務器端軟件之一。它快速、可靠并且可通過簡單的 API 擴充,將 Perl/Python 等解釋器編譯到服務器中。同時 Apache 音譯為阿帕奇,是北美印第安人的一個部落,叫阿帕奇族,在美國的西南部。也是一個基金會的名稱、一種武裝直升機等等。
- 雖然 Apache 可以非常完美的運行在各種操作系統中,但是絕大多數的 Apache 還是運行在 Linux 之上,Apache 也成為了眾多 Linux 發行版本的自帶應用
- 嚴格來說,Apache 只支持發布靜態網站、但可以通過中間件來支持 PHP,ASP、ASP.NET、JSP,但 Apache 仍然被大多數用來發布 PHP 網站
- Apache 雖然也存在安全性的漏洞,但由于其開源性,漏洞的修補和版本的更新速度非常快,相比 IIS, Apache 會更加安全
Nginx
圖 2-3
- Nginx 是一款輕量級的 Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,并在一個 BSD-like 協議下發行。其特點是占有內存少,并發能力強,事實上 nginx 的并發能力確實在同類型的網頁服務器中表現較好,中國大陸使用 nginx 網站用戶有:百度、京東、新浪、網易、騰訊、淘寶等。
- Nginx 只能安裝在 Linux 系統中,但是也有 Windows 的移植版
- Nginx 是 Apache 的最佳替代品,相比 Apache,Nginx 在處理高并發業務時,資源消耗更低,性能更強
- Nginx 本身只是一款反向代理軟件,只支持 HTML 靜態頁面,需要通過各種中間件來支持其他動態頁面
- 雖然從性能上來講,Nginx 要優于 Apache,但 Nginx 也存在模塊少、BUG 多,穩定性較差的缺點
Tomcat
圖 2-4
- Tomcat 服務器是一個免費的開放源代碼的 Web 應用服務器,屬于輕量級應用服務器,在中小型系統和并發訪問用戶不是很多的場合下被普遍使用,是開發和調試 JSP 程序的首選。
- Tomcat 可以作為一個 Web 服務軟件,同樣也可以作為 Apache 的一個中間件來使 Apache 可以支持 JSP 站點
- Tomcat 可以運行在 Windows 和 Linux 中
Weblogic
圖 2-5
- Weblogic 是一個基于 JAVAEE 架構的中間件,WebLogic 是用于開發、集成、部署和管理大型分布式 Web 應用、網絡應用和數據庫應用的 Java 應用服務器。
3.2.3 Web 開發語言
Web 開發語言是指用于編寫動態網頁的語言,目前幾乎所有的網站都是動態網頁技術編寫的。就算很多網站瀏覽時發現 URL 后綴是 html,也是通過后臺做了動轉靜。
- PHP(超文本預處理器)PHP 是一種通用開源腳本語言。語法吸收了 C 語言、Java 和 Perl 的特點,利于學習,使用廣泛,主要適用于 Web 開發領域。PHP 獨特的語法混合了 C、Java、Perl 以及 PHP 自創的語法。它可以比 CGI 或者 Perl 更快速地執行動態網頁。用 PHP 做出的動態頁面與其他的編程語言相比,PHP 是將程序嵌入到 HTML(標準通用標記語言下的一個應用)文檔中去執行,執行效率比完全生成 HTML 標記的 CGI 要高許多;PHP 還可以執行編譯后代碼,編譯可以達到加密和優化代碼運行,使代碼運行更快。PHP 是目前使用最廣泛的 Web 開發語言
- ASP(動態腳本頁面)是微軟公司開發的服務器端腳本環境,可用來創建動態交互式網頁并建立強大的 web 應用程序。當服務器收到對 ASP 文件的請求時,它會處理包含在用于構建發送給瀏覽器的 HTML 網頁文件中的服務器端腳本代碼。除服務器端腳本代碼外,ASP 文件也可以包含文本、HTML(包括相關的客戶端腳本)和 com 組件調用。ASP 簡單、易于維護,是小型頁面應用程序的選擇。ASP 語言并不面向對象,開發難度相對較大,一般不用于大中型網站
- ASP.NETASP.NET 又稱為 ASP+,不僅僅是 ASP 的簡單升級,而是微軟公司推出的新一代腳本語言。ASP.NET 基于 .NET Framework 的 Web 開發平臺,不但吸收了 ASP 以前版本的最大優點并參照 Java、VB 語言的開發優勢加入了許多新的特色,同時也修正了以前的 ASP 版本的運行錯誤。一般多見于政府機構和國企的網站
- JSP(JAVA 服務器頁面)JSP 技術有點類似 ASP 技術,它是在傳統的網頁 HTML 文件中插入 Java 程序段 (Scriptlet) 和 JSP 標記 (tag),從而形成 JSP 文件,后綴名為 .jsp。 用 JSP 開發的 Web 應用是跨平臺的,既能在 Linux 下運行,也能在其他操作系統上運行。
- CMS(內容管理系統)可以把 CMS 理解為網站模板,允許用戶根據統一的網站模板,快速生成自定義的個人或企業站點;CMS 提供常見企業網站所需的的信息展示、信息更新、信息刪除、信息管理等功能,包括非常詳細的網站風格自定義設置。CMS 有各種語言編寫的,常見的有 ASP、PHP、ASP.NET常見的有動易 CMS,織夢 CMS,PHPcms 等
3.2.4 數據庫
數據庫(Database),即為數據的倉庫,用于存儲和記錄數據信息。在動態網站的架構中,頁面展示的內容并不是寫在頁面中,而是存儲在數據庫中,Web 服務通過動態語言來調用數據庫中的數據,產生靜態頁面后再傳遞至客戶端瀏覽器。這樣就避免了網站內容更新時去修改源文件。只需要更新數據庫就行了
MySQL
圖 2-6
- MySQL 是一個關系型數據庫管理系統,由瑞典 MySQL AB 公司開發,目前屬于 Oracle 旗下產品。MySQL 是最流行的關系型數據庫管理系統之一,在 WEB 應用方面,MySQL 是最好的 RDBMS (Relational Database Management System,關系數據庫管理系統) 應用軟件。
- 目前在 Web 架構中使用最廣泛的數據庫系統
SQL Server
圖 2-7
- SQL Server 是由微軟開發和推廣的關系數據庫管理系統(DBMS),它最初是由Microsoft、Sybase 和 Ashton-Tate 三家公司共同開發的,并于 1988 年推出了第一個 OS/2 版本。Microsoft SQL Server 近年來不斷更新版本,1996 年,Microsoft 推出了 SQL Server 6.5 版本;1998 年,SQL Server 7.0 版本和用戶見面;SQL Server 2000 是 Microsoft 公司于 2000 年推出,目前最新版本是 2017 年份推出的 SQL SERVER 2017。
Oracle
圖 2-8
- Oracle 是甲骨文公司的一款關系數據庫管理系統。它是在數據庫領域一直處于領先地位的產品。可以說 Oracle 數據庫系統是目前世界上流行的關系數據庫管理系統,系統可移植性好、使用方便、功能強,適用于各類大、中、小、微機環境。它是一種高效率、可靠性好的 適應高吞吐量的數據庫解決方案。
Access
圖 2-9
- Microsoft Office Access 是由微軟發布的小型關系數據庫管理系統。它結合了 MicrosoftJet Database Engine 和 圖形用戶界面兩項特點,是 Microsoft Office 套件的程序之一。
數據庫管理工具
- PhpMyAdmin:一個以 PHP 為基礎,以 Web 方式架構在網站主機上的 MySQL 的數據庫管理工具,讓管理者可用 Web 圖形化界面管理 MySQL 數據庫。
- Navicat:一套快速、可靠并價格相當便宜的數據庫管理工具,專為簡化數據庫的管理及降低系統管理成本而設。它的設計符合數據庫管理員、開發人員及中小企業的需要。
3.3 Web 服務常見架構
Web 服務架構指選擇什么開發語言 + Web 服務軟件 + 數據庫 + 操作系統的組合來搭建 Web 服務,雖然嚴格來說,所有的組件都可以自由組合,但是因為某幾種常被放在一起使用,所以擁有了越來越高的兼容度,逐漸共同組成了一個個強大的 Web 應用程序平臺
3.3.1 LAMP
- Linux + Apache + MySQL + PHP
- 被譽為 Web 服務黃金組合,適用于大型網站架構,穩定性高,常見于企業網站。大多數網站都采用的該架構
3.3.2 LNMP
- Linux + Nginx + MySQL + PHP
- 使用 Nginx 來取代 Apache,對性能有較高要求的 Web 站點可以選擇這種架構組合
3.3.3 WAMP
- Windows + Apache + MySQL + PHP
- 把 Apache 放在 Windows 操作系統中運行,適用于中小型網站架構,易于管理,常見于教育(大學等)、政府事業單位
3.4 其他
- IIS + ASP + Access:大多用在學校、地方政府等站點
- JSP + Tomcat + Oracle:大多用在企業內部 ERP 系統、金融機構站點
.登錄面頁的設計思路
登錄頁面有3個部分組成:
1. 用戶名
2. 密碼
3. 驗證碼
登錄頁面的顯示是由下圖所示的index.asp文件在服務器端執行后返順到瀏覽器顯示的。這個index.asp文件,我們已設置為默認文檔。
關于默認文檔設置,
見本系列文章,(02)ASP如何設定主目錄和默認文檔
登錄頁文件源代碼index.asp的圖片
Index.asp文件短短的30余行代碼,其實信息量很大,所包含的知識點很多,涉及到Hmtl 超文本標記語言(Hyper Text Markup Language)代碼,Css 層疊樣式表(英文全稱:Cascading Style Sheets)的應用(有興趣的朋友,可自行尋找資料學習)。以及ASP腳本語言的相關知識。
在這里僅以此程序為例,主要介紹ASP的設計思路,其它方面知識不做過多敘述。(Htmlt和Css每一項都是一門專業的知識,我輩窮畢生之力也未畢會精通,只是將需要的知識會用即可)。
在該界面,點擊登錄后,index.asp就將用戶名,密碼和驗證碼交給了①index_login_check.asp,由這個文件對這些數據進行判斷處理。
二.登錄信息判斷處理的設計思路
1. 首先從Access數據庫表userinfo中讀取已注冊用戶的信息數據。
2. 收取index.asp傳遞過到的用戶名、密碼和驗證碼
3. 編程判斷用戶名、密碼是否有非法字符
4. 編程判斷用戶名、密碼是否為空
5. 編程判斷驗證碼有無
6. 編程判斷驗證碼是否有誤
7. 同數據庫中表userinfo里的已有注冊信息進行比對,判斷輸出的用戶名、密碼是否正確,正確就跳轉到系統工作界面,不正確,提示錯誤信息,并返回登錄界面。
8. 無論正確與否,均將判斷信息寫入Jxc_adminlog表中,包括輸入的用戶名,登錄時間,登錄電腦所用的IP地址以及登錄成功與否的原因。
這兩個主要文件的源代見本站系列文章(05)ASP登錄頁面的設計,以圖片的形式展示給大家了,希望對大家有所幫助。
下圖展示給大家的是登錄成功后的工作平臺界面,這個界面在以前的文章里也給大家展示過了,生產經營管理信息系統的所有操作均在這個界面完成,包括信息錄入,查詢,批量導入和導出等功能。
下幾篇文章我計劃將數據庫表的結構設計、利用電子表格excel進行批量數據導入和將查詢數據導出到excel電子表格中的心得體會與大家分享,同時希望大家多提寶貴意見,以利于我的進步。
icrosoft Access 數據庫在將Active Server Pages (ASP) 用于小型應用程序的開發人員中已經流行多年,但Microsoft Access 數據庫不是為可伸縮性而設計的,因此Access 數據庫應該只在性能不是一個因素的情況下使用,并且最好不要使用Microsoft Access 數據庫托管大型數據驅動應用程序。
在IIS 7.0、IIS 7.5 及更高版本中,進行了多項安全更改,這些更改可能會影響經典ASP 應用程序的運行方式。例如,如果您要將使用網站內容區域內的Access 數據庫的經典ASP 應用程序復制到使用IIS 7.0 或更高版本的美國服務器,您可能會收到以下錯誤消息:
Microsoft JET 數據庫引擎錯誤“80004005”
未指明的錯誤。
/example.asp,第100 行
這是由Access 驅動程序觸發的一般性錯誤,可能由于多種原因發生,但不正確的權限是一個常見原因。更具體地說,使用Microsoft Access 數據庫的能力是通過Microsoft JET 數據庫引擎實現的,該引擎在連接到Access 數據庫時會創建各種臨時文件和鎖定文件。以下部分將討論可能發生這種情況的一些原因以及如何解決這些情況。
在IIS 上將經典ASP 與Microsoft Access 數據庫結合使用
使用64 位系統
不幸的是,沒有64 位ODBC 驅動程序,因此在64 位系統上,您必須以32 位模式運行應用程序。為此,請使用以下步驟:
1)在任務欄上,單擊開始,指向管理工具,然后單擊Internet 信息服務 (IIS) 管理器。
2)在連接窗格中,單擊應用程序池。
3)突出顯示應用程序的應用程序池,然后單擊“操作”窗格中的“高級設置... ” 。
4)在Advanced Settings對話框中,為Enable 32-Bit Applications指定True。
5)單擊確定關閉高級設置對話框。
注意:用于管理ODBC 連接的64 位控制面板小程序不會顯示32 位ODBC 驅動程序。要解決此問題,您需要打開32 位ODBC 小程序。為此,請使用以下步驟:
1)單擊“開始”,然后單擊“運行”,或打開命令提示符。
2)輸入以下命令:
Console
%windir%\syswow64\odbcad32.exe
3)按回車鍵。
使用用戶訪問控制
您需要使用具有完全管理權限的帳戶來確保按照本文檔中的步驟進行操作。這最好通過使用以下兩種方法之一來完成:
1)使用本地管理員帳戶登錄您的計算機。
2)如果您使用具有管理權限但不是本地管理員帳戶的帳戶登錄,請使用“以管理員身份運行”選項打開所有應用程序和所有命令提示符會話。
上述條件是必需的,因為Windows Vista 和Windows Server 2008 中的用戶帳戶控制 (UAC) 安全組件將阻止對IIS 配置設置的管理訪問。
在IIS 7.0 及更高版本中使用失敗請求跟蹤
如果您將IIS失敗請求跟蹤配置為從HTTP 500 錯誤中捕獲跟蹤日志,當您檢查失敗的跟蹤日志時,您將看到類似于下圖的內容:
盡管此錯誤表明打開數據庫時發生了故障,但它并未提供任何附加信息來幫助您將問題縮小到特定區域。