首頁 Java java教程 javaweb必備知識點

javaweb必備知識點

Jul 16, 2019 pm 04:56 PM
java javaweb

一、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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Java Spring 面試題 Java Spring 面試題 Aug 30, 2024 pm 04:29 PM

在本文中,我們保留了最常被問到的 Java Spring 面試問題及其詳細答案。這樣你就可以順利通過面試。

突破或從Java 8流返回? 突破或從Java 8流返回? Feb 07, 2025 pm 12:09 PM

Java 8引入了Stream API,提供了一種強大且表達力豐富的處理數據集合的方式。然而,使用Stream時,一個常見問題是:如何從forEach操作中中斷或返回? 傳統循環允許提前中斷或返回,但Stream的forEach方法並不直接支持這種方式。本文將解釋原因,並探討在Stream處理系統中實現提前終止的替代方法。 延伸閱讀: Java Stream API改進 理解Stream forEach forEach方法是一個終端操作,它對Stream中的每個元素執行一個操作。它的設計意圖是處

PHP:網絡開發的關鍵語言 PHP:網絡開發的關鍵語言 Apr 13, 2025 am 12:08 AM

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP與Python:了解差異 PHP與Python:了解差異 Apr 11, 2025 am 12:15 AM

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

Java程序查找膠囊的體積 Java程序查找膠囊的體積 Feb 07, 2025 am 11:37 AM

膠囊是一種三維幾何圖形,由一個圓柱體和兩端各一個半球體組成。膠囊的體積可以通過將圓柱體的體積和兩端半球體的體積相加來計算。本教程將討論如何使用不同的方法在Java中計算給定膠囊的體積。 膠囊體積公式 膠囊體積的公式如下: 膠囊體積 = 圓柱體體積 兩個半球體體積 其中, r: 半球體的半徑。 h: 圓柱體的高度(不包括半球體)。 例子 1 輸入 半徑 = 5 單位 高度 = 10 單位 輸出 體積 = 1570.8 立方單位 解釋 使用公式計算體積: 體積 = π × r2 × h (4

PHP與其他語言:比較 PHP與其他語言:比較 Apr 13, 2025 am 12:19 AM

PHP適合web開發,特別是在快速開發和處理動態內容方面表現出色,但不擅長數據科學和企業級應用。與Python相比,PHP在web開發中更具優勢,但在數據科學領域不如Python;與Java相比,PHP在企業級應用中表現較差,但在web開發中更靈活;與JavaScript相比,PHP在後端開發中更簡潔,但在前端開發中不如JavaScript。

PHP與Python:核心功能 PHP與Python:核心功能 Apr 13, 2025 am 12:16 AM

PHP和Python各有優勢,適合不同場景。 1.PHP適用於web開發,提供內置web服務器和豐富函數庫。 2.Python適合數據科學和機器學習,語法簡潔且有強大標準庫。選擇時應根據項目需求決定。

創造未來:零基礎的 Java 編程 創造未來:零基礎的 Java 編程 Oct 13, 2024 pm 01:32 PM

Java是熱門程式語言,適合初學者和經驗豐富的開發者學習。本教學從基礎概念出發,逐步深入解說進階主題。安裝Java開發工具包後,可透過建立簡單的「Hello,World!」程式來實踐程式設計。理解程式碼後,使用命令提示字元編譯並執行程序,控制台上將輸出「Hello,World!」。學習Java開啟了程式設計之旅,隨著掌握程度加深,可創建更複雜的應用程式。

See all articles