第七週週報

河軟CSDN樂知學院

學員周學習總結

姓名

**

周次

7

方向

Java

本週學習知識點:

Tomcat配置Web站點

HTTP

Servlet入門

本週學習收穫:

Tomcat配置Web站點

WEB應用的相關知識

安裝 Tomcat

Tomcat 的啓動與停止

配置WEB站點的虛擬目錄

配置虛擬主機

Web應用程序簡介

應用程序:指允許用戶執行特定任務的軟件程序,主要分爲桌面應用程序和Web應用程序兩種類型。

桌面應用程序(DesktopApplication):一般是指採用客戶機/服務器結構(Client/Server)的應用程序。

C/S模式將應用與服務分離,系統具有穩定性和靈活性

C/S模式配備的是點對點的結構模式,適用於局域網,有可靠的安全性

由於客戶端實現與服務器端的直接連接,沒有中間環節,因此響應速度快

在C/S模式中,作爲客戶機的計算機都要安裝客戶機程序,一旦軟件系統升級,每臺客戶機都要安裝客戶機程序,系統升級和維護較爲複雜

Web應用程序(Web Application)

Web應用程序一般是指採用瀏覽器和服務器結構(Browser/Server,簡稱B/S結構)的應用程序。

Web應用程序由Web服務器和Web客戶端組成。

Web服務器:Web服務器上裝有某個應用程序,這個Web服務器應用程序負責接收客戶請求進行處理,向客戶返回結果

Web客戶端:允許用戶請求服務器上的某個資源,並且向客戶端返回結果。Web應用程序的客戶端一般是指Web瀏覽器。Web瀏覽器就是一個軟件,它知道怎麼與服務器通信,它還有一個重要任務,就是解釋HTML代碼,把Web頁面呈現給用戶

B/S模式的優點:

(1)易於維護:基於B/S模型的系統當需要升級或維護時,只需修改服務器程序即可。

(2)易於實現。B/S模型的表現層可以用製作網頁的html來實現,瀏覽器和網頁設計技術已經相當成熟。而且用Java技術開發的Web系統可以安裝在任意一種服務器系統平臺上,也就是常說的具有跨平臺性。

(3)使用方便,無論客戶在什麼地方,只要服務器正在運行,客戶就能通過網絡進行連接,實現對數據的訪問和操作。

URL:Uniform Resource Locator(統一資源定位符)

例如,http://www.it315.org:80/java/index.html

主要的WEB服務器軟件

IIS、Apache 、Tomcat

WEB,在英語中web即表示網頁的意思,它用於表示Internet主機上供外界訪問的資源。

Internet上供外界訪問的Web資源分爲:

靜態web資源(如html 頁面):指web頁面中供人們瀏覽的數據始終是不變。

動態web資源:指web頁面中供人們瀏覽的數據是由程序產生的,不同時間點訪問web頁面看到的內容各不相同。

靜態web資源開發技術

Html

常用動態web資源開發技術:

JSP/Servlet、ASP、PHP等

在Java中,動態web資源開發技術統稱爲Javaweb,我們課程的重點也是教大家如何使用Java技術開發動態的web資源,即動態web頁面。

認識web.xml文件的作用:

通過web.xml文件把某個web資源配成網站首頁。

部署描述符文件

<WEB應用程序>/WEB-INF/web.xml

<Tomcat主目錄>/conf/web.xml

目錄的默認網頁文件

<welcome-file-list>

<welcome-file>index.html</welcome-file>

<welcome-file>index.htm</welcome-file>

<welcome-file>index.jsp</welcome-file>

</welcome-file-list>

在一個tomcat服務器中可以放置多個網站,所謂配置虛似主機,就是在tomcat服務器中配置一個網站。

如需在WEB服務器中配置一個網站,需使用Host元素進行配置,例:

<Hostname=”site1” appBase=”c:\app”></Host>

配置的主機(網站)要想被外部訪問,必須在DNS服務器或windows系統中註冊。

配置多個網站。

缺省虛似主機。

HTTP

HTTP簡介

l 客戶端連上web服務器後,若想獲得web服務器中的某個web資源,需遵守一定的通訊格式,HTTP協議用於定義客戶端與web服務器通迅的格式。

l WEB瀏覽器與WEB服務器之間的一問一答的交互過程必須遵循一定的規則,這個規則就是HTTP協議。

l HTTP是hypertext transferprotocol(超文本傳輸協議)的簡寫,它是TCP/IP協議集中的一個應用層協議,用於定義WEB瀏覽器與WEB服務器之間交換數據的過程以及數據本身的格式。

l HTTP協議的版本

HTTP/1.0、HTTP/1.1

l HTTP協議是學習JavaWEB開發的基石,不深入瞭解HTTP協議,就不能說掌握了WEB開發,更無法管理和維護一些複雜的WEB站點。深入理解HTTP協議,對管理和維護複雜的WEB站點、開發具有特殊用途的WEB服務器程序具有直接影響。

HTTP 1.0的會話方式

l 四個步驟:

建立連接

發送請求

回送響應

關閉連接

l 瀏覽器與WEB服務器的連接過程是短暫的,每次連接只處理一個請求和響應。對每一個頁面的訪問,瀏覽器與WEB服務器都要建立一次單獨的連接。

l 瀏覽器到WEB服務器之間的所有通訊都是完全獨立分開的請求和響應對。

HTTP 協議

瀏覽器訪問多圖網頁的過程

l 一個web頁面中,使用img標籤引用了三幅圖片,當客戶端訪問服務器中的這個web頁面時,客戶端總共會訪問幾次服務器,即向服務器發送了幾次HTTP請求。

HTTP請求消息

l 客戶端連上服務器後,向服務器請求某個web資源,稱之爲客戶端向服務器發送了一個HTTP請求。一個完整的HTTP請求包括如下內容:

l 一個請求行、若干消息頭、以及實體內容,如下所示:

請求頭

消息頭

空行

請求數據

l 請求消息的結構:

一個請求行、若干消息頭、以及實體內容,其中的一些消息頭和實體內容都是可選的,消息頭和實體內容之間要用空行隔開。

l 舉例:

GET /books/java.html HTTP/1.1

Accept: */*

Accept-Language: en-us

Connection: Keep-Alive

Host: localhost

Referer: http://localhost/links.asp

User-Agent: Mozilla/4.0

Accept-Encoding: gzip, deflate

請求行:

l 請求行中的GET稱之爲請求方式,請求方式有:

POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT

• 常用的有: GET、 POST

• 用戶如沒有設置,默認情況下瀏覽器向服務器發送的都是get請求,例如在瀏覽器直接輸地址訪問,點超鏈接訪問等都是get,用戶如想把請求方式改爲post,可通過更改表單的提交方式實現。

l 不管POST或GET,都用於向服務器請求某個WEB資源,這兩種方式的區別主要表現在數據傳遞上:

• 如請求方式爲GET方式,則可以在請求的URL地址後以?的形式帶上交給服務器的數據,多個數據之間以&進行分隔,例如:

• GET /mail/1.html?name=abc&password=xyz HTTP/1.1

• GET方式的特點:在URL地址後附帶的參數是有限制的,其數據容量通常不能超過1K。

• 如請求方式爲POST方式,則可以在請求的實體內容中向服務器發送數據,Post方式的特點:傳送的數據量無限制。

消息頭:

l 用於HTTP請求中的常用頭

Accept: text/html,image/*

Accept-Charset: ISO-8859-1

Accept-Encoding: gzip,compress

Accept-Language: en-us,zh-cn

Host: www.it315.org:80

If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT

Referer: http://www.it315.org/index.jsp

User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)

• Cookie

Connection: close/Keep-Alive

Date: Tue, 11 Jul 2000 18:23:51 GMT

HTTP響應

l 一個HTTP響應代表服務器向客戶端回送的數據,它包括:

一個狀態行、若干消息頭、以及實體內容 。

狀態行

消息頭

空行

響應數據

l 舉例:

HTTP/1.1 200 OK

Server: Microsoft-IIS/5.0

Date: Thu, 13 Jul 2000 05:46:53 GMT

Content-Length: 2291

Content-Type: text/html

Cache-control: private

<HTML>

<BODY>

……

狀態行:

l 狀態行

格式: HTTP版本號 狀態碼 原因敘述<CRLF>

舉例:HTTP/1.1 200 OK

典型情況

l 200(正常)

表示一切正常,返回的是正常請求結果。

l 302/307(臨時重定向)

指出被請求的文檔已被臨時移動到別處,此文檔的新的URL在Location響應頭中給出。

l 304(未修改)

表示客戶機緩存的版本是最新的,客戶機應該繼續使用它。

l 403(禁止)

服務器理解客戶端請求,但拒絕處理它。通常由於服務器上文件或目錄的權限設置所致。

l 404(找不到)

服務器上不存在客戶機所請求的資源。

l 500(內部服務器錯誤)

服務器端的CGI、ASP、JSP等程序發生錯誤。

Servlet入門

Servlet的應用

1.Servlet是一種獨立於平臺和協議的服務器端的Java應用程序,可以生成動態的web頁面。它擔當Web瀏覽器或其他http客戶程序發出請求、與http服務器上的數據庫或應用程序之間交互的中間層。

2.主要內容:Web應用程序開發過程、Servlet的運行原理、Servlet的生命週期等。

Java Web應用程序的開發過程

1. 開發Java Web應用程序的大致流程

– 設計目錄結構:根據具體業務需要,遵照規範的目錄結構設計好Web應用程序的目錄結構。

– 編寫Web應用程序代碼:編寫業務邏輯所需的Java代碼。

– 編寫部署描述文件:把Servlet、初始化參數等定義到部署描述文件web.xml中。

– 編譯代碼:把編寫好的Java源代碼編譯成字節碼。

– 將Web應用程序打包:把整個Web應用程序打成War包,以方便部署。

– 部署Web應用程序:把打好的War包部署到Web服務器上。

2. 執行Web應用程序:啓動Web服務器,利用客戶端瀏覽器進行訪問測試。

注意:在具體的開發過程中,一般都會使用IDE工具,使用IDE工具進行Web應用程序開發時,只需要開發人員完成前三個步驟,其他步驟IDE工具可以自動完成。

Servlet運行原理

1.當Web服務器接收到一個HTTP請求時,它會先判斷請求內容——如果是靜態網頁數據,Web服務器將會自行處理,然後產生響應信息;如果牽涉到動態數據,Web服務器會將請求轉交給Servlet容器。此時Servlet容器會找到對應的處理該請求的Servlet實例來處理,結果會送回Web服務器,再由Web服務器傳回用戶端。

2.針對同一個Servlet,Servlet容器會在第一次收到http請求時建立一個Servlet實例,然後啓動一個線程。第二次收到http請求時,Servlet容器無須建立相同的Servlet實例,而是啓動第二個線程來服務客戶端請求。所以多線程方式不但可以提高Web應用程序的執行效率,也可以降低Web服務器的系統負擔。

Servlet的生命週期

不存在Servlet實例—容器裝載Servlet—創建Servlet實例—初始化Servlet調用init方法—調用Servlet方法對應ServletServlet方法—結束Servlet調用destroy方法

Servlet接口實現類:

1、HttpServlet指能夠處理HTTP請求的servlet,它在原有Servlet接口上添加了一些與HTTP協議處理方法,它比Servlet接口的功能更爲強大。因此開發人員在編寫Servlet時,通常應繼承這個類,而避免直接去實現Servlet接口。

2、HttpServlet在實現Servlet接口時,覆寫了service方法,該方法體內的代碼會自動判斷用戶的請求方式,如爲GET請求,則調用HttpServlet的doGet方法,如爲Post請求,則調用doPost方法。因此,開發人員在編寫Servlet時,通常只需要覆寫doGet或doPost方法,而不要去覆寫service方法。

Servlet的一些細節(1)

1、:由於客戶端是通過URL地址訪問web服務器中的資源,所以Servlet程序若想被外界訪問,必須把servlet程序映射到一個URL地址上,這個工作在web.xml文件中使用<servlet>元素和<servlet-mapping>元素完成。

2、<servlet>元素用於註冊Servlet,它包含有兩個主要的子元素:<servlet-name>和<servlet-class>,分別用於設置Servlet的註冊名稱和Servlet的完整類名。

3、一個<servlet-mapping>元素用於映射一個已註冊的Servlet的一個對外訪問路徑,它包含有兩個子元素:<servlet-name>和<url-pattern>,分別用於指定Servlet的註冊名稱和Servlet的對外訪問路徑。

Servlet的一些細節(2):

1、同一個Servlet可以被映射到多個URL上,即多個<servlet-mapping>元素的<servlet-name>子元素的設置值可以是同一個Servlet的註冊名。

2、在Servlet映射到的URL中也可以使用*通配符,但是隻能有兩種固定的格式:一種格式是“*.擴展名”,另一種格式是以正斜槓(/)開頭並以“/*”結尾。

Servlet的一些細節(3):

對於如下的一些映射關係:

Servlet1 映射到 /abc/*

Servlet2 映射到 /*

Servlet3 映射到 /abc

Servlet4 映射到 *.do

Servlet的一些細節(4):

1、Servlet是一個供其他Java程序(Servlet引擎)調用的Java類,它不能獨立運行,它的運行完全由Servlet引擎來控制和調度。

2、針對客戶端的多次Servlet請求,通常情況下,服務器只會創建一個Servlet實例對象,也就是說Servlet實例對象一旦創建,它就會駐留在內存中,爲後續的其它請求服務,直至web容器退出,servlet實例對象纔會銷燬。

3、在Servlet的整個生命週期內,Servlet的init方法只被調用一次。而對一個Servlet的每次訪問請求都導致Servlet引擎調用一次servlet的service方法。對於每次訪問請求,Servlet引擎都會創建一個新的HttpServletRequest請求對象和一個新的HttpServletResponse響應對象,然後將這兩個對象作爲參數傳遞給它調用的Servlet的service()方法,service方法再根據請求方式分別調用doXXX方法。

Servlet的一些細節(5):

1、如果在<servlet>元素中配置了一個<load-on-startup>元素,那麼WEB應用程序在啓動時,就會裝載並創建Servlet的實例對象、以及調用Servlet實例對象的init()方法。

2、用途:爲web應用寫一個InitServlet,這個servlet配置爲啓動時裝載,爲整個web應用創建必要的數據庫表和數據。

Servlet的一些細節(6):

1、如果某個Servlet的映射路徑僅僅爲一個正斜槓(/),那麼這個Servlet就成爲當前Web應用程序的缺省Servlet。

2、凡是在web.xml文件中找不到匹配的<servlet-mapping>元素的URL,它們的訪問請求都將交給缺省Servlet處理,也就是說,缺省Servlet用於處理所有其他Servlet都不處理的訪問請求。

3、在<tomcat的安裝目錄>\conf\web.xml文件中,註冊了一個名稱爲org.apache.catalina.servlets.DefaultServlet的Servlet,並將這個Servlet設置爲了缺省Servlet。

4、當訪問Tomcat服務器中的某個靜態HTML文件和圖片時,實際上是在訪問這個缺省Servlet。

線程安全:

1、當多個客戶端併發訪問同一個Servlet時,web服務器會爲每一個客戶端的訪問請求創建一個線程,並在這個線程上調用Servlet的service方法,因此service方法內如果訪問了同一個資源的話,就有可能引發線程安全問題。

2、如果某個Servlet實現了SingleThreadModel接口,那麼Servlet引擎將以單線程模式來調用其service方法。

3、SingleThreadModel接口中沒有定義任何方法,只要在Servlet類的定義中增加實現SingleThreadModel接口的聲明即可。

4、對於實現了SingleThreadModel接口的Servlet,Servlet引擎仍然支持對該Servlet的多線程併發訪問,其採用的方式是產生多個Servlet實例對象,併發的每個線程分別調用一個獨立的Servlet實例對象。

5、實現SingleThreadModel接口並不能真正解決Servlet的線程安全問題,因爲Servlet引擎會創建多個Servlet實例對象,而真正意義上解決多線程安全問題是指一個Servlet實例對象被多個線程同時調用的問題。事實上,在Servlet API 2.4中,已經將SingleThreadModel標記爲Deprecated(過時的)。

ServletConfig對象:

1、在Servlet的配置文件中,可以使用一個或多個<init-param>標籤爲servlet配置一些初始化參數。

2、當servlet配置了初始化參數後,web容器在創建servlet實例對象時,會自動將這些初始化參數封裝到ServletConfig對象中,並在調用servlet的init方法時,將ServletConfig對象傳遞給servlet。進而,程序員通過ServletConfig對象就可以得到當前servlet的初始化參數信息。

3、閱讀ServletConfigAPI,並舉例說明該對象的作用:

獲得字符集編碼

獲得數據庫連接信息

獲得配置文件

學習總結:

Java Web,是用Java技術來解決相關web互聯網領域的技術總和。web包括:web服務器和web客戶端兩部分。Java在客戶端的應用有java applet不過現在使用的很少,Java在服務器端的應用非常的豐富,比如Servlet,JSP和第三方框架等等。Java技術對Web領域的發展注入了強大的動力。

對授課教師意見建議:

希望老師能帶領我們學習java web實戰開發項目,讓我們能更好的體會學習。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章