Servlet開發基礎

來源:互聯網
上載者:User

1.澄清動態網頁和動態HTML網頁的區別:
動態網頁:web伺服器端動態建立的網頁,在不同時間段訪問可能產生不同的效果。
動態HTML:是在用戶端使用指令檔產生的一種動態效果。是瀏覽器解釋執行的。
最主要的區別在於在不同時間段查看前者的源檔案都是不同的,而後者的源檔案都是相同的源檔案,儘管在不同的時間段表現出來的效果不一樣。

2.瀏覽器、引擎、API和動態網頁程式之間的關係:
Servlet是一個java類,由具有web伺服器調用和啟動運行,它負責處理它所對應的一個或一組URL地址的訪問請求。並接受用戶端發出的訪問請求資訊和產生響應資訊。

3.兩個重要的概念:
C/S:Client/Server,用戶端直接和資料庫打交道。Java裡面用Swing寫的GUI程式就是基於C/S的,其缺陷為:第一.如果每個用戶端程式都與資料庫保持持久的串連但是資料庫系統支援的並發串連有限的話,就限制了同時啟動並執行用戶端程式的數目。其次,商務邏輯處理和介面顯示都由用戶端程式負責處理,一旦有地方要發生變化,則需要對整個用戶端程式進行修改,這就變的相當的難以維護。

B/S:Browere/Server,與前者最明顯的區別在於此種架構是將使用者操作介面以網頁的形式展現給了用戶端,它分成了三層:即用戶端和web伺服器、資料庫。這樣用戶端不再直接和資料庫打交道了。實現了介面顯示和商務邏輯處理的分離。

4.在前面的文章中已經體驗過寫第一個Servlet程式,對其中的一些步驟和概念都做過一些簡單的說明,這裡詳細的介紹一下Servlet映射的問題。開啟 ‘WEB應用程式目錄/WEB-INF/web.xml’,假如我們現在已經有這麼一段:
<servlet>
        <servlet-name>AnyName</servlet-name>
        <servlet-class>org.it315.HelloServlet</servlet-class>
</servlet>
上面這段代碼錶示我們已經註冊了一個Servlet,其註冊名為AnyName,現在我們要映射這個註冊名的訪問路徑,可以這樣做:
<servlet-mapping>
        <servlet-name>AnyName</servlet-name>
        <url-pattern>/demo/hello.html</url-pattern>
</servlet-mapping>
<url-pattern>元素以正斜杠開頭,這個正斜杠代表web應用程式的根目錄,注意不是整個網站的根目錄,上面這個設定後就可以這樣來訪問HelloServlet:http://localhost:8080/demo/hello.html,對於同一個Servlet可以被映射到多個URL上,也可以使用*萬用字元,但是只能用下面兩種格式:一,‘*.副檔名’,在*前面不能加/,另一種形式是以/開頭,並以/*結尾,中間是任意合法的標識符,當Servlet引擎接收到一個訪問請求時,它將採取最具體匹配原則來尋找請求URL的映射,其中,‘*.副檔名’優先順序最低。我們有時候在網頁地址欄上看到尾碼名為.html或者其他一些URL時可以帶參數,就是因為它們在設定映射URL時使用了這裡說到的幾種方法中的一種。

5.Serlvet啟用器:invoker
開啟conf/web.xml檔案,會看到這麼一段Servlet的註冊資訊:
<servlet>
        <servlet-name>invoker</servlet-name>
        <servlet-class>org.apache.catalina.servlets.InvokerServlet</servlet-class>
        <load-on-startup>2</load-on-startup>
</servlet>
此註冊名為invoker的Servlet是在全域web.xml中配置的,它的作用就是去啟用和調用其他的Servlet,它通過<load-on-startup>元素被設定成了Tomcat一啟動就被載入,在每個web應用程式中為Servlet啟用器所映射的訪問路徑可以各不相同,但是必須以‘/*’結尾,這樣就使得即使某個Servlet程式沒有在web.xml中註冊也只需要通過Servlet啟用器所映射的訪問路徑中的萬用字元(*)替換為這個Servlet的完整類名就可以調用這個Servlet了。

6.預設的Servlet
如果某個Servlet的映射路徑僅僅為一個/,那麼它就是一個預設的Servlet,凡是在web.xml中找不到映射匹配的都交給預設的Servlet處理。當訪問Tomcat伺服器上面的靜態HTML頁面,圖片,flash等等時,其實都時交給這個預設的Servlet去處理。這個預設的Servlet通常的處理方式就是把靜態資源中的內容按位元組原封不動的讀出來然後傳遞給用戶端,並且產生一定的響應訊息頭欄位。

7.編寫一個自動編譯工具
我們在命令列視窗編譯java源檔案通常有以下兩個特殊要求:
一.把servlet-api.jar檔案加入到CLASSPATH中,
二.編譯servlet源檔案到指定的WEB-INF/classes中,
我們在初學階段每次編寫完一個servlet檔案都要編譯,現在就使用一種偷懶的好方法,自己來編寫一個編譯工具,步驟如下:
建立一個compile.bat檔案,其內容如下
set CLASSPATH=%CLASSPATH%;<TOMCAT安裝目錄>/common/lib/servlet-api.jar
javac -d <web應用程式目錄>/WEB-INF/classes %1
pause
以後只要在windows的資源管理員視窗中把某個要編譯的java源檔案拖動到此compile.bat批次檔上就可以編譯完成,其中的%1表示要傳遞給這個批次檔的第一個參數,即這個java檔案名稱。pause語句的作用是讓此檔案執行完成後等待使用者輸入。這樣便於查看編譯結果。關於批處理的講解在前面文章中有過專門的介紹。有興趣的朋友可以參考參考。

8.設定預設網頁
可以在conf/web.xml檔案中加入如下一段代碼:
<welcome-file-list>
        <welcome-file>index.html</welcome-file>
</welcome-file-list>
這樣如果你只輸入web應用程式根目錄而沒加具體檔案名稱的話Tomcat就預設進此url映射的檔案了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.