一、基本概念
1.1、Web 開發的相關知識
Web,在英語中 Web 即表示網頁的意思,它用於表示 Internet 主機上供外界訪問的資源。
Internet 上供外界訪問的 Web 資源分爲:
-
靜態 Web 資源(如 html 頁面):指 Web 頁面中供人們瀏覽的數據始終是不變。
-
動態 Web 資源:指 Web 頁面中供人們瀏覽的數據是由程序產生的,不同時間點訪問 Web 頁面看到的內容各不相同。
靜態 Web 資源開發技術:HTML。
常用動態 Web 資源開發技術:JSP/Servlet、ASP、PHP 等。
在 Java 中,動態 Web 資源開發技術統稱爲 JavaWeb。
1.2、Web 應用程序
Web 應用程序指供瀏覽器訪問的程序,通常也簡稱爲 Web 應用。例如有 a.html 、b.html…..多個 Web 資源,這多個 Web 資源用於對外提供服務,此時應把這多個 Web 資源放在一個目錄中,以組成一個 Web 應用(或 Web 應用程序)。
一個 Web 應用由多個靜態 Web 資源和動態 Web 資源組成,如:html、css、js 文件,Jsp 文件、java 程序、支持 jar 包、配置文件等等。
Web 應用開發好後,若想供外界訪問,需要把 Web 應用所在目錄交給 Web 服務器管理,這個過程稱之爲虛似目錄的映射。
1.3、Web 發展史
Web 發展的兩個階段:靜態、動態。
1.4、靜態 Web
*htm、*html,這些是網頁的後綴,如果現在在一個服務器上直接讀取這些內容,那麼意味着是把這些網頁的內容通過網絡服務器展現給用戶。整個靜態 Web 操作的過程圖如下:
在靜態 Web 程序中,客戶端使用 Web 瀏覽器(IE、FireFox 等)經過網絡(Network)連接到服務器上,使用 HTTP 協議發起一個請求(Request),告訴服務器我現在需要得到哪個頁面,所有的請求交給 Web 服務器,之後 Web 服務器根據用戶的需要,從文件系統(存放了所有靜態頁面的磁盤)取出內容。之後通過 Web 服務器返回給客戶端,客戶端接收到內容之後經過瀏覽器渲染解析,得到顯示的效果。
靜態 Web 中存在以下幾個缺點:
1、Web 頁面中的內容無法動態更新,所有的用戶每時每刻看見的內容和最終效果都是一樣的。
爲了可以讓靜態的 Web 的顯示更加好看,可以加入了 JavaScript 以完成一些頁面上的顯示特效,但是這些特效都是在客戶端上藉助於瀏覽器展現給用戶的,所以在服務器上本身並沒有任何的變化。
實現靜態 Web 客戶端動態效果的手段:
-
JavaScript
-
VBScript
在實際的開發中 JavaScript 使用得最多。
2、靜態 Web 無法連接數據庫,無法實現和用戶的交互。
使用數據庫保存數據是現在大多數系統的選擇,因爲數據庫中可以方便地管理數據,增刪改查操作可以使用標準的 SQL 語句完成。
1.5、動態 Web
所謂的動態不是指頁面會動,主要的特性的是:“Web 的頁面展示效果因時因人而變”,而且動態 Web 具有交互性,Web 的頁面的內容可以動態更新。整個動態 Web 操作的過程圖如下:
動態 Web 中,程序依然使用客戶端和服務端,客戶端依然使用瀏覽器(IE、FireFox 等),通過網絡(Network)連接到服務器上,使用 HTTP 協議發起請求(Request),現在的所有請求都先經過一個 Web Server Plugin(服務器插件)來處理,此插件用於區分是請求的是靜態資源(*.htm 或者是*.htm)還是動態資源。
如果 Web Server Plugin 發現客戶端請求的是靜態資源(*.htm 或者是*.htm),則將請求直接轉交給 Web 服務器,之後 Web 服務器從文件系統中取出內容,發送回客戶端瀏覽器進行解析執行。
如果 Web Server Plugin 發現客戶端請求的是動態資源(*.jsp、*.asp/*.aspx、*.php),則先將請求轉交給 Web Container(Web 容器),在 Web Container 中連接數據庫,從數據庫中取出數據等一系列操作後動態拼湊頁面的展示內容,拼湊頁面的展示內容後,把所有的展示內容交給 Web 服務器,之後通過 Web 服務器將內容發送回客戶端瀏覽器進行解析執行。
1.6、動態 Web 應用的實現手段
動態 Web 現在的實現手段非常多,較爲常見的有以下幾種:
-
Microsoft ASP、ASP.NET
-
PHP
-
Java Servlet/JSP
1、Microsoft ASP、ASP.NET
微軟公司動態 Web 開發是比較早的,而且最早在國內最流行的是 ASP。ASP 就是在 HTML 語言之中增加了 VB 腳本,但是標準的開發應用應該是使用 ASP+COM,但是實際情況來看,在開發 ASP 的時候基本上都在一個頁面中寫上成百上千的代碼,頁面代碼極其混亂。
ASP 本身有開發平臺的限制:Windows+IIS+SQL Server/Access,ASP 只能運行在 Windows 操作系統上,ASP 現在基本上已經淘汰,現在基本上都是使用 ASP.NET 進行開發,ASP.NET 在性能有了很大的改善,而且開發迅速,但是依然受限於平臺。ASP.NET 中主要是使用 C# 語言。
2、PHP
PHP 開發速度很快,功能強大,跨平臺(平臺指的就是運行的操作系統),而且代碼也簡單。
3、Servlet/JSP
這是 SUN 公司(SUN 現在已經被 Oracle 公司收購)主推的 B/S 架構的實現語言,是基於 Java 語言發展起來的,因爲 Java 語言足夠簡單,而且很乾淨。
Servlet/JSP 技術的性能也是非常高的,不受平臺的限制,各個平臺基本上都可以使用。而且在運行中是使用多線程的處理方式,所以性能非常高。
SUN 公司最早推出的 Web 技術推出的是 Servlet 程序,Servlet 程序本身使用的時候有一些問題,所有的程序是採用 Java 代碼+HTML 的方式編寫的,即,要使用 Java 輸出語句,一行一行地輸出所有的 HTML 代碼,之後,SUN 公司受到了 ASP 的啓發,發展出了 JSP(Java Server Page),JSP 某些代碼的編寫效果與 ASP 是非常相似的。這樣可以很方便地使一些 ASP 程序員轉向 JSP 的學習,加大市場的競爭力度。
二、Web 服務器
2.1、Web 服務器簡介
1、Web 服務器是指駐留於因特網上某種類型計算機的程序,是可以向發出請求的瀏覽器提供文檔的程序。當 Web 瀏覽器(客戶端)連到服務器上並請求文件時,服務器將處理該請求並將文件反饋到該瀏覽器上,附帶的信息會告訴瀏覽器如何查看該文件(即文件類型)。
2、服務器是一種被動程序:只有當 Internet 上運行在其他計算機中的瀏覽器發出請求時,服務器纔會響應。
2.2、常見的 Web 服務器介紹
1、WebLogic
WebLogic 是美國 bea 公司出品的一個 application server。BEA WebLogic 是用於開發、集成、部署和管理大型分佈式 Web 應用、網絡應用和數據庫應用的 Java 應用服務器。將 Java 的動態功能和 Java Enterprise 標準的安全性引入大型網絡應用的開發、集成、部署和管理之中。是目前應用最廣泛的 Web 服務器,支持 J2EE 規範,而且不斷的完善以適應新的開發要求,啓動界面如圖:
2、WebSphere
WebSphere Application Server 是一種功能完善、開放的 Web 應用程序服務器,是 IBM 公司電子商務計劃的核心部分,它是基於 Java 的應用環境,用於建立、部署和管理 Internet 和 Intranet Web 應用程序。這一整套產品進行了擴展,以適應 Web 應用程序服務器的需要,範圍從簡單到高級直到企業級。啓動界面如圖:
3、Tomcat
TomcatTomcat 是一個實現了 Java EE 標準的最小的 Web 服務器,是 Apache 軟件基金會的 Jakarta 項目中的一個核心項目,由 Apache、Sun 和其他一些公司及個人共同開發而成。因爲 Tomcat 技術先進、性能穩定,而且開源免費,因而深受 Java 愛好者的喜愛並得到了部分軟件開發商的認可,成爲目前比較流行的 Web 應用服務器。學習 JavaWeb 開發一般都使用 Tomcat 服務器,該服務器支持全部 JSP 以及 Servlet 規範,啓動界面如圖:
4、IIS
Microsoft 的 Web 服務器產品爲 Internet Information Services(IIS),IIS 是允許在公共 Intranet 或 Internet 上發佈信息的 Web 服務器。IIS 是目前最流行的 Web 服務器產品之一,很多著名的網站都是建立在 IIS 的平 臺上。IIS 提供了一個圖形界面的管理工具,稱爲 Internet 信息服務管理器,可用於監視配置和控制 Internet 服務。
IIS 是一種 Web 服務組件,其中包括 Web 服務器、FTP 服務器、NNTP 服務器和 SMTP 服務器,分別用於網頁瀏覽、文件傳輸、新聞服務和郵件發送等方面,它使得在網絡(包括互聯網和局域網)上發佈信息成了一件很容易的事。它提供 ISAPI(Intranet Server API)作爲擴展 Web 服務器功能的編程接口;同時,它還提供一個 Internet 數據庫連接器,可以實現對數據庫的查詢和更新。
學習 Web 開發,需要先安裝一臺 Web 服務器,然後再在 Web 服務器中開發相應的 Web 資源,供用戶使用瀏覽器訪問。
三、搭建 JavaWeb 應用開發環境——Tomcat 服務器
3.1、疑問:學習 Web 開發,爲什麼必須要先裝一個 Web 服務器?
在本地計算機上隨便創建一個 Web 頁面,用戶是無法訪問到的,但是如果啓動 Tomcat 服務器,把 Web 頁面放在 Tomcat 服務器中,用戶就可以訪問了。這說明什麼問題?
1、不管什麼 Web 資源,想被遠程計算機訪問,都必須有一個與之對應的網絡通信程序,當用戶來訪問時,這個網絡通信程序讀取 Web 資源數據,並把數據發送給來訪者。
2、Web 服務器就是這樣一個程序,它用於完成底層網絡通迅。使用這些服務器,We 應用的開發者只需要關注 Web 資源怎麼編寫,而不需要關心資源如何發送到客戶端手中,從而極大的減輕了開發者的開發工作量。
3.2、下載和安裝 Tomcat 服務器
Tomcat 官方站點:http://jakarta.apache.org
下載 Tomcat 安裝程序包:http://tomcat.apache.org/
點擊【Download】跳轉到如下圖所示的下載頁面
-
tar.gz 文件是 Linux 操作系統下的安裝版本
-
exe 文件是 Windows 系統下的安裝版本
-
zip 文件是 Windows 系統下的壓縮版本
下載完成後,得到的是一個壓縮包,將壓縮包解壓。
將壓縮包解壓後,得到的就是如下圖所示的文件夾,這樣就完成了 Tomcat 服務器的安裝。
3.3、啓動和測試 Tomcat 服務器
啓動 Tomcat 服務器
雙擊 bin 目錄下的 startup.bat 文件啓動 Tomcat 服務器
測試 Tomcat 服務器
打開瀏覽器,輸入 http://localhost:8080/,能顯示如下界面代表安裝成功。
3.4、Tomcat 啓動常見問題
導致 Tomcat 服務器無法正常啓動的原因一般來說就是如下的兩個:
1、JAVA_HOME 環境變量設置問題
要想雙擊 bin 目錄下的 startup.bat 文件啓動 Tomcat 服務器,首先要做的就是在 Windows 中設置 JAVA_HOME 環境變量,因爲 Tomcat 服務器的啓動需要用到這個 JAVA_HOME 環境變量,如果 Windows 中不存在 JAVA_HOME 環境變量,則 Tomcat 服務器是無法啓動的。
2、端口占用問題
因爲 Tomcat 服務器啓動時默認是使用 8080 端口的,如果這個 8080 端口被別的應用程序佔用了,那麼 Tomcat 服務器就無法正常啓動,看到的現象就是“Tomcat 服務器啓動界面會打印出異常錯誤信息,然後就自動關閉了”,如下圖所示:
由於這個窗口從啓動到關閉的時間非常短,我們很難通過這個窗口看到 Tomcat 啓動時的報錯異常信息,因此我們一般只能通過 Tomcat 服務器的記錄的 log(日誌)信息去查看 Tomcat 服務器的運行情況。
在 Tomcat 服務器的根目錄下有一個 logs 文件夾,
logs 文件夾存放 Tomcat 的日誌文件,打開 logs 文件夾,可以看到裏面的 log 文件,其中有一個以“catalina.yyyy-MM-dd.log”形式命名的 log 文件,例如“catalina.2014-05-17.log”日誌文件就是記錄 Tomcat 服務器 2014-05-17 這一天的運行情況。
打開 catalina.2014-05-17.log 文件,看看裏面的日誌記錄信息,
日誌信息裏面清楚的記錄了 Tomcat 服務器的運行情況,如果因爲 8080 端口被佔用而無法正常啓動,就會記錄如上圖所示的異常信息,通過查看異常信息,我們就可知道 Tomcat 服務器爲什麼不能夠正常啓動了!
總結:當 Tomcat 服務器無法正常啓動時,首先檢查是否配置了 JAVA_HOME 環境變量,然後再檢查 Tomcat 服務器啓動時的端口是否被別的應用程序佔用了。