首頁  >  文章  >  Java  >  javaweb必備知識點

javaweb必備知識點

angryTom
angryTom原創
2019-07-16 16:56:283255瀏覽

一、WEB應用程式

B/S ( browser/server ,瀏覽器/伺服器)架構

基於HTTP傳輸協定(超文本傳輸協議,回憶HTML的名字:超文本標記語言)

WEB程式必須運行在web容器上,如Tomcat /Jboss/WebLogic等

二、HTTP協定

HTTP使用TCP作為它的支撐運輸層協議,預設的連接埠是80(預設埠)。

超文本傳輸協定(Hypertext Transfer Protocol,簡稱HTTP)是應用層協定。 HTTP 是一種請求/響應式的協議,即一個客戶端與伺服器建立連線後,向伺服器發送一個請求;伺服器接到請求後,給予對應的回應訊息。 、

HTTP 請求訊息由請求行、請求頭部、空白行和請求包體4 個部分組成下面對請求封包格式進行簡單的分析:

請求行:請求行由方法欄位、URL 欄位和HTTP 協定版本欄位3 個部分組成,他們之間使用空格隔開。常用的HTTP 請求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT;

GET:當客戶端要從伺服器中讀取某個資源時,使用GET 方法。 GET 方法要求伺服器將URL 定位的資源放在回應封包的資料部分,回送給客戶端,也就是向伺服器要求某個資源。使用GET 方法時,請求參數和對應的值附加在 URL 後面,利用一個問號(“?”)代表URL 的結尾與請求參數的開始,傳遞參數長度受限。例如,/index.jsp?id=100&op=bind。

POST:當客戶端提供給伺服器資訊較多時可以使用POST 方法,POST 方法向伺服器提交數據,例如完成表單資料的提交,將資料提交給伺服器處理。 GET 一般用於取得/查詢資源信息,POST 會附帶使用者數據,一般用於更新資源資訊。 POST 方法將請求參數封裝在HTTP 請求資料中,以名稱/值的形式出現,可以傳輸大量資料;請求頭部:請求頭部由關鍵字/值對組成,每行一對,關鍵字和值用英文冒號“:”分隔。

請求頭部通知伺服器有關於客戶端請求的信息,典型的請求頭有:

User-Agent:產生請求的瀏覽器類型;

Accept:客戶端可識別的回應內容類型清單;星號“ * ” 用於按範圍將類型分組,用“ */* ” 指示可接受全部類型,用“ type/* ”指示可接受type 類型的所有子類型;

Accept-Language:客戶端可接受的自然語言;

Accept-Encoding:客戶端可接受的編碼壓縮格式;

Accept-Charset:可接受的應答的字元集;

Host:請求的主機名,允許多個網域同處一個IP 位址,即虛擬主機;

connection:連接方式(close 或keepalive);

 Cookie:儲存於客戶端擴充字段,向同一網域的服務端發送屬於該網域的cookie;

空白行:最後一個請求頭之後是一個空白行,發送回車符和換行符,通知伺服器以下不再有請求頭;

請求包體:請求包體不在GET 方法中使用,而是在POST 方法中使用。 POST 方法適用於需要客戶填寫表單的場合。與請求包體相關的最常使用的是包體類型 Content-Type 和包體長度 Content-Length。

下面對回應封包格式進行簡單的分析:

#狀態行:狀態列由HTTP 協定版本欄位、狀態碼和狀態碼的描述文字3 個部分組成,他們之間使用空格隔開; 狀態碼由三位數字組成,第一位數字表示回應的類型,常用的狀態碼有五大類如下所示:

1xx :表示伺服器已接收了客戶端請求,客戶端可繼續發送請求;

2xx:表示伺服器已成功接收到請求並進行處理;

3xx:表示伺服器要求客戶端重定向;

4xx:表示客戶端的請求有非法內容; 

5xx:表示伺服器未能正常處理客戶端的請求而出現意外錯誤;

##狀態碼描述文字有如下取值:

200 OK:表示客戶端請求成功; 

400 Bad Request:表示客戶端請求有語法錯誤,不能被伺服器所理解;

401 Unauthonzed:表示請求未經授權,該狀態代碼必須與WWW-Authenticate 標頭域一起使用;

403 Forbidden:表示伺服器收到請求,但是拒絕提供服務,通常會在回應正文中給出不提供服務的原因; 

404 Not Found:請求的資源不存在,例如,輸入了錯誤的URL; 

500 Internal Server Error:表示伺服器發生不可預期的錯誤,導致無法完成客戶端的請求; 

503 Service Unavailable:表示伺服器目前無法處理客戶端的請求,在一段時間之後,伺服器可能會恢復正常;

三、Servlet

Servlet是javaWEB的核心,簡單的說就是用Java寫的伺服器端程式。當使用者進行一個動態請求(靜態請求就是直接請求HTML )時,實際上是請求—個servlet

WEB容器將Servlet載入到記憶體透過init方法進行初始化

##Service()方法根據請求方法呼叫對應的處理方法doPost()或doGet(),還有一些其他的請求方法doPut() doOptions()...但這些方法不常用,並且從安全的角度都是建議屏蔽的。

當Server不再需要Servlet時(一般當Server關閉時),Server呼叫 Servlet 的 destroy() 方法。

四、JSP

Java Server Pages是一種靜態編碼町機和動態編碼Java混合的技術, 也有說法就是將java程式碼鑲嵌在HTML上,在JSP之前,Servlet作為主體,功能比較強大,設計也很先進,但瑜出HTML頁面卻完全是Java的out.print(), 一行一句的輸出,對於頁面編寫和修改來說非常不方便,這才促使SUN公司推出JSP。 JSP和ASP、PHP類似都是鑲嵌型語言。另外補充一下,WEB容器後動的時候,會將_JSP編譯成Servlet,也有說法JSP是Servlet的升級版。

五、Tomcat

Java WEB容器很多,這裡以Tomcat為例來說。前面說到,WEB程式必須運行在WEB容器上。 Tomcat就是作為WEB容器來運行切Java WEB程式的。 Tomcat是JAVA語言寫的,需要JVM作為運作環境。

Tomcat的目錄結構

bin………………………………可執行程式(腳本),啟動停止偵錯Tomcat的一些bat.sh

conf…………………………….設定檔webx.ml server.xml 等

lib………………………………....Tomcat運行所需的jar套件

logs…………………………….曰志檔案

temp…………………………….臨時檔案

webapps………………………WEB 程式(編譯後的專案檔)

work…………………………….將jsp檔案產生java檔在此目錄中進行

補充說明一下,Tomcat將jsp編譯成Java檔案並不是即時進行的,所以有時候修改了頁面,並沒有及時生效,這時候我們只需要刪除一下work目錄下對應的檔案即可。

六、Java WEB專案結構

#一般來說,我們常說的Java專案基本上都是WEB專案(B/S架構),不是說Java不能做C/S程序,實際上Java的Swing就是畫界面的,但是現在C#已經成為畫界面最流行的語言,快速,簡單,所以越來越少的人用Java來做C/S程式開發了。我們主要來說Java WEB項目,以下是最基本的項目架構。

src…………………………….JAVA原始碼,java檔案目錄

webContent/webRoot……………專案發布目錄

WEB- INF

lib………………………………….專案所需的jar套件

web.xml……………………WEB 程式的入口

以上是Java WEB專案的核心結構,實際開發中,建置專案會比這些複雜,特別是引用框架以後,設定檔的增加,會增加一些新的目錄。

七、開發框架

前面提到客戶端發起動態請求時,請求到Servlet處理,然後返回,整個請求處理的工作都是在Servlet中處理的,看起來比較簡單,每當需要一個不同的請求就寫一個Servlet,但實際開發的時候如果功能模組比較多,就需要寫很多Servlet,並且如果我們想修改一個請求的傳回,也必須透過修改Java程式碼(Servlet)的方式來實現。

這樣對功能的擴展和維護來說,就比較麻煩了,所以也就推動了很多集成幵發框架的流行,比如Webwork,Struts,SpringMVC,Jfinal等都是主流的Java WEB開發框架。

使用框架有一個很籠統的優點概述,可以加快開發進程,在類似專案中重用程式碼將為開發者節省大量的時間和精力.框架為執行繁瑣的程式碼任務提供預建模區塊。讓使用者只關心核心業務的開發,框架幫你封鎖原有技術跟業務開發無關的各類技術問題。但如果想要深入的了解一個框架,使用的更熟練,還是需要了解底層的原理,找到其源頭也就是Servlet。

以SpringMVC為例簡單描述一下工作原理

SprfngMVC主要也是透過DispatcherServlet (Servlet調配器,在web_xml中配置)實作了Servlet這個接口,又叫前端控制器,來自前端的請求會先到達這裡,它負責到後台去匹配合適的handler。

DispatcherServlet的主要工作流程如下:

1、客戶端發出http請求給web伺服器,web伺服器對http請求進行解析,如果匹配DispatcherServlet的請求映射路徑(在web.xml中指定),web容器將請求轉交給DispatcherServlet.

2、 DipatcherServlet接收到這個請求之後將根據請求的資訊(包括URL、Http方法、請求封包頭和請求參數Cookie等)以及HandlerMapping的配置找到處理請求的處理器Controller (Handler)。

3、 DispatclierServlet 根據 HandlerMapping 找到對應的Handler,將處理權交給Handler ( Handler將具體的處理進行封裝),再由具體的 HandlerAdapter對Handler進行具體的調用。

5、Handler對資料處理完成以後將回傳一個ModeAndView物件給DispatcherServlet.

6、  Handler回傳的ModelAndView只是一個邏輯視圖並不是一個正式的視圖,Di spatcherSevlet透過ViewResolver將邀輯視圖轉換為真正的視圖view(這句話簡單的就是傳回一個要回傳的頁面的相對路徑,透過試圖解析器轉換成具體那個頁面)。

7、  Dispatcher透過model解析出ModeAndView中的參數進行解析最終展現出完整的view並回傳給客戶端。

八、用SpringMVC寫功能模組

由於框架配置工作量比較大,也需要對各方面的技術有所了解,暫時不做描述。我們簡單的說一下實際開發中,如何在現有的框架基礎上完成一個功能模組,了解功能的基本流程,以登入為例:

1、首先要有登入入口( JSP頁面),在SpringMVC框架中我們不建議直接存取JSP頁面,所以我們登入頁面的存取也是透過後台處理的;

2、編寫丨ogin.jsp頁面及登入回頁index .jsp ;

3、寫LoginController,裡麵包含兩個請求控制方法,一個preLogin(),一個doLogin() ,其中preLogin()負責處理請求登入頁面的請求(回到login.jsp ) , doLogin()處理登入請求返回index.jsp。

4. login.jsp中需要透過表單或ajax進行登入請求。

請求/preLogin業務邏輯處理返回到login.jsp à 輸入使用者名稱、密碼…

請求/doLogin業務邏輯處理,返回登入結果index.jsp。

九、其他基礎知識

資料庫操作,Jdbc/Hibernate/Mybatis

JSP標籤,EL表達式, Struts標籤,C標籤等

基本的前端技術CSS/JS/jQuery/Ajax

以上是javaweb必備知識點的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn