簡介
當我們瀏覽社交媒體網站的時間軸,或在電子商務網站上購買我們最喜歡的商品,或在穀歌中搜索東西時,我們使用術語“服務器”指的是響應我們所有“請求”的遠程實體。這些請求隻不過是我們對本地計算機信息的要求。
圖1。客戶端和服務器
上圖演示了客戶機和服務器。它們一般都是計算機,它們通過互聯網連接在一起。我們可以將客戶端定義為可以向遠程計算機發出“請求”的計算機,將服務器定義為能夠理解請求並向客戶端發送“響應”的計算機。這些請求和響應通信通過一組定義良好的稱為“HTTP”協議的規則進行。
客戶端計算機使用特殊的軟件應用程序與服務器通信,最常見的應用程序是我們著名的瀏覽器,如'穀歌Chrome ', ' Mozilla Firefox ', Opera, Safari等http://www.facebook.com在瀏覽器的地址欄中,點擊“enter”按鈕,請求就從客戶端計算機發送到服務器。這裏的請求是獲取網站的主頁。
從服務器到客戶端的響應是一種特殊的標記語言,可以被瀏覽器理解,稱為HTML -超文本標記語言。基本上,HTML文件由內容和顯示內容的指令組成。
靜態和動態網站
我們日常使用的網站大致可以分為兩類。
a.靜態網站
b.動態網站。
靜態網站具有以HTML編碼的固定內容,並存儲在web服務器上。它總是保持相同的每個用戶訪問網站。例如,https://en.wikipedia.org/wiki/Encyclopedia是一個靜態網站。當請求上述網站時,世界上的每個用戶都會得到相同的HTML內容。這些網站的開發非常簡單和直接。
但是,想想https://www.facebook.com/。當你訪問Facebook時間軸時,Facebook服務器會向你的電腦發送一個HTML編碼的網站。但是,這個HTML內容是專門為您創建的。根據你的用戶名和密碼,Facebook服務器會識別你。它會根據你朋友的活動、你以前的請求、你關注的頁麵的更新以及專門為你創建的相關廣告來創建你的時間軸。這種類型的網站被稱為動態網站。
另一個例子是你的G郵件收件箱。與靜態網站相比,這些動態網站的開發需要更嚴格的技術。動態網站中可用的內容根據用戶的位置、時區、一天中的時間、國家、母語等而變化。大多數情況下,這些網站在後端使用可修改的數據庫,並根據這些數據庫提供頁麵。用戶的活動或請求可以對數據庫進行永久性的更改,以便用戶獲得定製的網頁視圖。例如,訪問電子郵件收件箱的用戶可以刪除、轉發、標記為重要郵件或將郵件移動到另一個文件夾,從而導致數據庫中的更改。這些結果修改了他的收件箱的HTML內容,這些內容在服務器上創建,發送到客戶端並顯示在他的瀏覽器中。
客戶端和服務器端技術
正如我們所討論的,一組技術,如HTML,被用於在客戶的計算機上呈現網站,這被稱為客戶端技術。HTML、CSS和Javascript是基本的客戶端技術。
然而,一些技術正在服務器端運行,以識別特定的用戶,並為該用戶組成一個動態網站。這些技術稱為服務器端技術。Java servlet、JSP、Python、Ruby on Rails、PHP都是一些流行的服務器端技術。
圖2所示。靜態和動態網頁
我們可以用一個簡單的類比來理解其中的區別。靜態網站就像麵包店裏現成的蛋糕。顧客可以簡單地點一個“黑森林”蛋糕,它將在沒有任何定製的情況下交付。對於每一位訂購它的顧客來說,它的特征、外觀、感覺和味道以及所有其他蛋糕特征都是完全相同的。另一方麵,動態網站就像為特殊場合訂購的蛋糕,對顏色、味道、蛋糕頂部的名稱、配料等都有非常具體的要求。在這裏,麵包師隻在從顧客那裏得到規格後才準備蛋糕。
動態網頁隻有在用戶發出請求時才會創建,服務器上運行的一組單獨的技術將負責創建這些頁麵並將它們發送給用戶。
在本文中,我們將討論“Java servlet”的基礎知識,這是一種用於開發交互式web應用程序的特定服務器端技術。
協議的作用
協議是一組預定義的規則,指示必須如何完成特定操作。例如,假設您考慮一個交通路口。在這種情況下,有車輛向四麵八方行駛,每一輛車都看著紅綠燈信號或交警的信號,並相應地行動。有一套規則和慣例,所有的用戶都遵守,這導致了一個順利的操作。盡管人們說不同的語言,使用不同類型的車輛,但遵守協議使他們能夠無縫地協作和工作。同樣,如果你考慮計算機網絡,這是一個涉及來自全球各地不同供應商的不同硬件和軟件技術和產品的領域。最終,當客戶機-服務器通信發生時,所有這些差異對用戶來說都是不可見的。盡管用戶使用不同的瀏覽器、操作係統和電腦,但Facebook的時間線將保持不變。他在任何地方都會得到幾乎相同的經驗。他不需要因為任何差異而改變訪問萬維網的程序。 It is possible only because of the protocols.
我們知道,互聯網是一個平台,全球數十億台設備都連接在其中。它們如何識別或定位彼此以進行通信?為了解決這個問題,我們需要一種尋址機製或一組規則,以便連接到互聯網的每個設備都能遵循。這組規則被稱為“IP協議”。該協議提供了類似於145.124.77.56的特定格式來尋址連接到internet的設備。雖然IP協議能夠對連接到互聯網的設備進行尋址和定位,但下一層通信功能是由另一組稱為“TCP協議”的規則定義的。因此,我們在計算機互聯網絡的各個層中使用了幾種協議。
web應用程序的開發位於應用層之下,我們很少有特定的協議來處理更高級別的通信,如客戶端請求和服務器響應。這一層常用的協議稱為“HTTP協議”。HTTP代表超文本傳輸協議。之所以叫這個名字,是因為這個協議定義了從服務器到客戶端傳輸超文本(HTML編碼)文檔的規則。圖像、音頻、視頻、文本等各種數據都可以在HTML的幫助下發送。
Java servlet基礎知識
利用Servlet技術在服務器端創建動態網頁。它駐留在服務器中,並根據客戶機程序的請求進行調用。有幾種技術可以從服務器創建和發送動態網頁。它們統稱為服務器端技術,與它們相比,servlet有幾個優點。因為servlet是基於Java語言的,所以它們是非常健壯和可伸縮的。
Java Servlet生態係統由豐富的API支持,可開發功能強大的程序。API代表應用程序編程接口,它基本上是Java接口、類和使用它們的必要文檔的集合。類似於用於特定任務的工具包,API提供了解決編程問題所需的所有預構建機製。下麵將詳細討論Java Servlet API。
在Java servlet API的幫助下,我們可以構建服務器端Java servlet程序,該程序將作為客戶端發送請求的web服務器的一部分執行。從外部角度看,客戶端看到服務器響應了每個請求。在內部,這些響應是由Java Servlet程序生成的。因此,Java servlet在動態網頁開發中扮演著重要而強大的角色。
Servlet API
如前一節所述,API是開發人員如何利用給定技術的可能性,Java Servlet API由包、類和這些包中的接口以及關於它們的詳細文檔組成。每個類和接口都有抽象和具體的方法,需要理解這些方法才能有效地開發Servlet程序。
最重要的兩個包是javax。Servlet和javax.servlet.http包。javax中的類和接口。servlet包is not specific to any protocols, whereas the entities inside javax.servlet.http package is meant for http requests and responses.
javax中重要接口的列表。servlet包and a brief description can be found here. For a detailed view of the entire Java API, please visit the official documentation sitehttps://docs.oracle.com/。
接口以抽象方法的形式提供了功能的抽象。它們清楚地定義了一個編程組件要滿足的契約或條款。Java Servlet技術為我們提供了很少的接口來滿足基本的需求。例如,' Servlet '是一個需要以通用Servlet或HTTPServlet的形式實現的接口。這些類聲明servlet生命周期所必需的方法,並且可以重寫這些方法以實現用戶的需求。因此,充分理解Servlet API中可用的接口和類對於開發應用程序至關重要。
javax中重要接口的列表。servlet包
Servlet
ServletRequest
ServletResponse
請求轉發;分派請求
ServletConfig
ServletContext
javax中重要類的列表。servlet包
GenericServlet
ServletInputStream
ServletOutputStream
ServletException
UnavailableException
javax.servlet.http包中重要接口的列表
HttpServletRequest
HttpServletResponse
HttpSession
HttpSessionListener
HttpSessionAttributeListener
HttpSessionBindingListener
HttpSessionActivationListener
javax.servlet.http包中重要類的列表
HttpServlet
餅幹
HttpServletRequestWrapper
HttpServletResponseWrapper
HttpSessionEvent
HttpSessionBindingEvent
開發Servlet應用程序
基於上麵討論的所有概念,讓我們嚐試構建一個基本的servlet程序。
要在您的本地計算機中執行Java Servlet程序,您應該將您的計算機設置為服務器,以便它能夠接收來自客戶機瀏覽器的請求、處理它們並發送動態響應。讓你的電腦成為服務器的最簡單的方法是安裝任何在互聯網上可用的輕量級web服務器軟件。對於我們的示例,我們使用Apache Tomcat web服務器,它可以從Apache網站下載。
安裝和測試Apache webserver的說明:
- 從以下網站下載合適的Apache tomcat版本:https://tomcat.apache.org/download - 80. cgi。,並保存在本地文件夾中。
- 要在您的計算機上運行web服務器,您必須根據計算機中存放Apache Tomcat和Java軟件的本地文件路徑,在計算機中設置以下環境變量。
- 個人電腦的環境變量可在“高級係統設置”的“環境變量”部分設置,該部分可通過右鍵單擊“我的電腦”圖標獲得。下麵是一個示例屏幕。
圖3。設置tomcat服務器的環境變量
[根據係統配置為文件路徑提供正確的值。]給出的值僅供參考
使用給定的值設置以下環境變量。
- $CATALINA_HOME: C:\Program Files\Apache軟件基金會\Apache Tomcat 6.0.26
- JAVA_HOME: C:\Program Files\Java\ jdk1.6.0_14
- classpath: C:\Program Files\Apache Software Foundation\Apache Tomcat 6.0.26\lib\servlet-api.jar
- 下到Apache Tomcat根文件夾中的“bin”文件夾,運行“startup.exe”文件。現在服務器將啟動,您可以在命令提示符中看到服務器日誌。
- 現在我們的服務器正在本地計算機上運行。基本上,當我們試圖訪問任何網站,我們提供URL統一資源定位器,它看起來像http://wikipedia.org。在我們的示例程序中,我們將使用在本地機器上運行的服務器,因此我們將使用http://localhost:8080訪問服務器。
- 現在,打開瀏覽器,點擊URL“http://localhost:8080”。
這將根據您所安裝的軟件版本提供如下所示的Apache tomcat主頁。如果您能夠在瀏覽器中看到類似的頁麵,那麼您的服務正在運行並準備接收請求。
視圖。Apache Tomcat主頁
如果您看到上麵的屏幕,則說明我們成功地運行了服務器,並從我們的客戶端(internet瀏覽器)訪問了服務器。現在我們可以看到如何開發一個簡單的Java servlet程序並在這個設置中執行它。
一個Servlet示例
考慮到上述所有概念,讓我們開發一個簡單的Java Servlet應用程序來驗證用戶輸入的用戶名和密碼。舉例來說,我們正在考慮一個登錄應用程序。在這個應用程序中,用戶在web頁麵上輸入他的用戶名和密碼,然後Java Servlet程序驗證憑證。為簡單起見,我們避免了應用程序的數據庫部分,驗證在servlet程序本身中進行。
借助給定的圖,可以理解應用程序的目的。
Figure.5。Java Servlet應用程序示例
該應用程序由以下步驟組成。
- 用戶通過URL訪問web應用程序http://localhost:8080/loginapp/login.html.
- 服務器向客戶端響應login.html文件,瀏覽器顯示登錄頁麵,其中包含用戶名和密碼文本框以及登錄按鈕。
- 用戶在文本框中輸入用戶名和密碼,並提交“login”按鈕。
- 輸入的用戶名和密碼被發送到服務器。java servlet程序LoginServlet.java被指定來處理這個請求。servlet程序檢查用戶名的值是否為“admin”,密碼是否為“adminpass”。理想情況下,用戶名和密碼將存儲在數據庫中,Java servlet程序與數據庫通信以驗證用戶憑據。但是,為了簡化這裏的理解,我們跳過了這一部分,並假設用戶輸入的憑證在java servlet程序本身中得到驗證。
執行程序
要執行Java servlet程序,我們需要了解下麵給出的tomcat文件夾結構的基礎知識。
圖7。Apache Tomcat文件夾結構
要執行示例應用程序,我們需要執行以下操作。
- 必須在web apps文件夾下創建每個web應用程序的新文件夾。應用程序的名稱必須是文件夾的名稱。這被稱為應用程序的上下文根。
- 編譯Java Servlet程序,並將類文件存儲在web apps/application_name/ web - inf /classes文件夾中。
- 將靜態HTML頁麵存儲在tomcat根文件夾中的專用文件夾中。
- 在WEB-INF文件夾中,我們需要創建一個名為web.xml的XML文件。這個文件的目的是描述web應用程序的各種特性。在我們的示例中,我們將隻看到基本的特性,即來自客戶機的請求被映射到服務器中的Java Servlet程序。代碼如下所示。
web . xml
< web xmlns = " http://java.sun.com/xml/ns/j2ee " xmlns: xsi = " http://www.w3.org/2001/XMLSchema-instance " xsi: schemaLocation = " http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd " version = " 2.4 " > <顯示名稱> Servlet Hello World < /顯示名稱> < Servlet > < servlet-name > loginRequest < / servlet-name > < Servlet類> LoginServlet < / Servlet類> < / Servlet > < Servlet映射> < servlet-name > loginRequest < / servlet-name > < url模式>登錄< / url模式> < / Servlet映射> < / web >
Login.html
登錄頁麵