搜尋
首頁Javajava教程javaweb必備知識點

javaweb必備知識點

Jul 16, 2019 pm 04:56 PM
javajavaweb

一、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
如何將Maven或Gradle用於高級Java項目管理,構建自動化和依賴性解決方案?如何將Maven或Gradle用於高級Java項目管理,構建自動化和依賴性解決方案?Mar 17, 2025 pm 05:46 PM

本文討論了使用Maven和Gradle進行Java項目管理,構建自動化和依賴性解決方案,以比較其方法和優化策略。

如何使用適當的版本控制和依賴項管理創建和使用自定義Java庫(JAR文件)?如何使用適當的版本控制和依賴項管理創建和使用自定義Java庫(JAR文件)?Mar 17, 2025 pm 05:45 PM

本文使用Maven和Gradle之類的工具討論了具有適當的版本控制和依賴關係管理的自定義Java庫(JAR文件)的創建和使用。

如何使用咖啡因或Guava Cache等庫在Java應用程序中實現多層緩存?如何使用咖啡因或Guava Cache等庫在Java應用程序中實現多層緩存?Mar 17, 2025 pm 05:44 PM

本文討論了使用咖啡因和Guava緩存在Java中實施多層緩存以提高應用程序性能。它涵蓋設置,集成和績效優勢,以及配置和驅逐政策管理最佳PRA

如何將JPA(Java持久性API)用於具有高級功能(例如緩存和懶惰加載)的對象相關映射?如何將JPA(Java持久性API)用於具有高級功能(例如緩存和懶惰加載)的對象相關映射?Mar 17, 2025 pm 05:43 PM

本文討論了使用JPA進行對象相關映射,並具有高級功能,例如緩存和懶惰加載。它涵蓋了設置,實體映射和優化性能的最佳實踐,同時突出潛在的陷阱。[159個字符]

Java的類負載機制如何起作用,包括不同的類載荷及其委託模型?Java的類負載機制如何起作用,包括不同的類載荷及其委託模型?Mar 17, 2025 pm 05:35 PM

Java的類上載涉及使用帶有引導,擴展程序和應用程序類負載器的分層系統加載,鏈接和初始化類。父代授權模型確保首先加載核心類別,從而影響自定義類LOA

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。