日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

编程体系结构(07):JavaEE之Web开发

發布時間:2025/3/16 java 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 编程体系结构(07):JavaEE之Web开发 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文源碼:GitHub·點這里 || GitEE·點這里

一、基礎概念

1、CS與BS架構

CS架構模式

客戶端/服務器(Client/Server)模式,既要編寫服務器端程序,也要開發客戶端程序,軟件更新時需要同時更新客戶端和服務器端,整體模式相比BS架構要復雜,但是安全性比較高。

B/S架構模式

即瀏覽器/服務器(Browser/Server),只需要編寫服務器端程序,瀏覽器的界面作為訪問的服務端的入口,架構相對簡單,可以快速迭代,但是安全性較差。

2、Socket通信機制

TCP/IP 協議

傳輸控制協議/網際協議是指能夠在多個不同網絡間實現信息傳輸的協議簇。TCP/IP協議不僅僅指的是TCP和IP兩個協議,而是指一個由FTP、SMTP、TCP、UDP、IP等協議構成的協議簇,只是因為在TCP/IP協議中TCP協議和IP協議最具代表性,所以被稱為TCP/IP協議。

Socket套接字

網絡中不同主機上的應用進程之間進行雙向通信的端點的抽象,一個套接字就是網絡上進程通信的一端,提供了應用層進程利用網絡協議交換數據的機制。通常接收請求數據,并做業務處理的稱為服務端即ServerSocket,發送請求并接收處理結果的稱為客戶端。

二、Http協議

1、Http和Https

Http協議

HTTP超文本傳輸協議,是用于從萬維網服務器傳輸超文本到本地瀏覽器的傳送協議,基于TCP/IP通信協議來傳遞數據:HTML文件、圖片、查詢數據等。HTTP協議基于客戶端-服務端架構模式。瀏覽器作為HTTP客戶端通過URL向服務端即WEB服務器發送請求。Web服務器根據接收到的請求后,處理完請求后向客戶端發送響應信息。

協議特點:簡單快速、靈活、無連接、無狀態、支持客戶/服務器模式。

Https協議

以安全為準則的HTTP通道,是HTTP的安全版,在HTTP請求上加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL。簡單來說,HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,要比http協議安全。HTTPS協議的主要作用可以分為兩種:一種是建立一個信息安全通道,來保證數據傳輸的安全;另一種就是確認網站的真實性。

Https和Http區別

安全證書:Https協議需要到CA申請證書,一般免費證書較少,因而需要一定費用。

數據傳輸:Http是超文本傳輸協議,信息是明文傳輸,https則是具有安全性的ssl加密傳輸協議。

連接方式:Http和Https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443。

2、Get和Post請求

瀏覽器端

從瀏覽器角度看這個兩種請求的區別:GET方式讀取資源,比如Get到靜態頁面,即使多次讀取不會對訪問數據產生影響,也被稱為"冪等"請求。POST方式在頁面中定義表單,提交表單會把數據提交到服務器,而且多數情況下會產生數據,比如常用的保存數據接口,并非"冪等"操作,不冪等也就意味著不能隨意多次執行。

服務接口

這里指用Ajax程序請求服務接口,提交的請求類型?;蛘咂渌鸋ttp請求工具類,還有情況是微服務中各種Feign接口間的請求。這種情況接口發送請求時,限制相對較少,比如REST風格接口常用GET、POST、PUT、DELETE,幾種方式分別獲取、創建、更新、刪除 資源。

3、握手揮手機制

三次握手

第一次握手:客戶端主動向服務器發起請求連接,請求報文中發送SYN=1,此時隨機生成初始序列號seq=x,此時,客戶端進程進入SYN-SENT同步已發送狀態。

第二次握手:服務端收到請求報文后,確認客戶的SYN,如果請求沒有拒絕,則發出確認報文。報文中應該ACK=1,SYN=1,確認號是ack=x+1,同時自己也發送一個SYN包seq=y,此時,服務器進程進入SYN-RCVD同步收到狀態。

第三次握手:客戶端收到確認后,需要向服務器確認報文的ACK=1,ack=y+1,此時,TCP連接建立,客戶端進入ESTABLISHED已建立連接狀態。完成三次握手,客戶端與服務器開始傳送數據。

四次揮手

第一次揮手:客戶端發送一個結束FIN,用來主動關閉和服務端的數據傳輸,釋放連接且停止發送數據,報文首部:FIN=1,序列號seq=u;隨后客戶端進入終止等待1狀態FIN-WAIT-1。

第二次揮手:服務端收到這個FIN,發出確認報文ACK=1,確認收到序號是收到的序號+1,即ack=u+1,且帶上自己的序列號seq=v,和SYN一樣,一個FIN將占用一個序號。如此,服務器通知應用進程,客戶端已經沒有數據要發送,如果服務器發送數據,客戶端依然要接收,該狀態會持續一段時間,服務端進入關閉等待狀態CLOSE-WAIT??蛻舳耸盏椒掌鞯拇_認請求后,進入終止等待2狀態FIN-WAIT-2,等待服務器發送連接釋放報文。

第三次揮手:服務器向客戶端發送釋放連接報文FIN=1,ack=u+1,此時服務端還處于半關閉狀態,服務器可能還會發送一些數據,此時序列號為seq=w,如此,服務器進入最后確認狀態LAST-ACK,等待客戶端的確認。

第四次揮手:客戶端收到服務器的連接釋放報文后,回發確認,ACK=1,ack=w+1,序列號是seq=u+1,如此,客戶端進入時間等待狀態TIME-WAIT。此時TCP連接還沒有釋放,必須經過最長報文段壽命的時間后,才進入CLOSED狀態。MSL:最長報文段壽命,一般2分鐘,TCP連接釋放時,主動方必須經過2MSL后才進入CLOSED狀態,因此主動方關閉時間比較晚。

三、Servlet組件

Java編寫的服務器端程序,具有獨立于平臺和協議的特性,主要功能在于交互式地瀏覽和生成數據,生成動態Web內容。使用Servlet,可以收集來自網頁表單的用戶輸入,呈現來自數據庫或者其他源的記錄,還可以動態創建網頁。

1、實現方式

繼承HttpServlet,HttpServlet擔任抽象模板角色,模板方法:由service()方法擔任;

繼承GenericServlet抽象類,其中的service方法為抽象方法;

實現Servlet接口,包含init、getServletConfig、service、getServletInfo、destroy幾個核心方法;

2、生命周期

加載和實例化,初始化init,服務service,銷毀:destroy。

3、核心API組件

ServletConfig:獲取servlet初始化參數和servletContext對象;

ServletContext:在整個Web應用的動態資源之間共享數據;

ServletRequest:封裝Http請求信息,在請求時創建;

ServletResponse:封裝Http響應信息,在請求時創建;

4、轉發和重定向

轉發:服務器端進行的頁面跳轉的控制 ;

重定向:服務端響應跳轉信息,瀏覽器端進行的頁面跳轉 ;

5、Cookie與Session

Cookie機制

Cookie在HTTP中通常是用來辨別用戶身份,進行會話跟蹤而儲存在用戶本地終端上的數據,一般會加密處理,由用戶客戶端計算機暫時或永久保存的信息。其結構就是一個鍵和一個值構成的。隨著服務器端的響應發送給客戶端瀏覽器。然后客戶端瀏覽器會把Cookie保存起來,當下一次再訪問服務器時把Cookie再發送給服務器。

Session會話

用戶在應用程序的Web頁之間跳轉時,存儲在Session對象中的變量將不會丟失,而是在整個用戶會話中一直存在下去。Servlet中可以把一個會話內需要共享的數據保存到HttSession對象中。四大域對象:PageContext、ServletRequest、HttpSession、ServletContext。

6、監聽.過濾.攔截

監聽器

JavaWeb三大組件:Servlet,Listener,Filter,監聽器就是指在應用程序中監聽相關對象狀態變化的組件。

過濾器

客戶端請求Servlet時,先執行相關Filter,如果Filter通過,則繼承執行請求的Servlet;如果Filter不通過,則不會執行用戶請求的Servlet。過濾器可以動態地攔截請求和響應。

攔截器

Spring框架中的攔截器Interceptor類似于Servlet中的過濾器Filter,主要用于攔截用戶請求并作相應的處理。例如通過攔截器可以進行權限驗證、記錄請求信息的日志、判斷用戶是否登錄等。請求轉發不執行攔截、過濾;重定向執行攔截和過濾。

四、數據庫連接池

1、C3P0連接池

C3P0是一個開源的JDBC連接池,應用程序根據C3P0配置來初始化數據庫連接,可以自動回收空閑連接的功能。

2、Druid連接池

Druid連接池為監控而生,內置強大的監控功能,監控特性不影響性能。內置了StatFilter功能,能采集非常完備的連接池中訪問數據庫執行信息,Druid連接池內置一個監控頁面,提供了非常完備的監控信息,可以快速診斷系統的瓶頸,也是當前最常用的連接池。

五、運行服務器

1、Jetty容器

Jetty 是一個開源的servlet容器,它為基于Java的web容器,例如JSP和servlet提供運行環境。Jetty是使用Java語言編寫的,它的API以一組JAR包的形式發布。開發人員可以將Jetty容器實例化成一個對象,可以迅速為一些獨立運行(stand-alone)的Java應用提供網絡和web連接。

2、Tomcat服務器

Tomcat服務器是一個免費的開放源代碼的Web應用服務器,屬于輕量級應用服務器,在中小型系統和并發訪問用戶不是很多的場合下被普遍使用,是開發和調試JSP程序的首選。使用Tomcat最關鍵的兩個操作:使用開發工具連接Tomcat并部署web應用;將應用程序打包放到Tomcat服務下運行。

六、源代碼地址

GitHub·地址 https://github.com/cicadasmile GitEE·地址 https://gitee.com/cicadasmile

推薦閱讀:編程體系整理

序號項目名稱GitHub地址GitEE地址推薦指數
01Java描述設計模式,算法,數據結構GitHub·點這里GitEE·點這里☆☆☆☆☆
02Java基礎、并發、面向對象、Web開發GitHub·點這里GitEE·點這里☆☆☆☆
03SpringCloud微服務基礎組件案例詳解GitHub·點這里GitEE·點這里☆☆☆
04SpringCloud微服務架構實戰綜合案例GitHub·點這里GitEE·點這里☆☆☆☆☆
05SpringBoot框架基礎應用入門到進階GitHub·點這里GitEE·點這里☆☆☆☆
06SpringBoot框架整合開發常用中間件GitHub·點這里GitEE·點這里☆☆☆☆☆
07數據管理、分布式、架構設計基礎案例GitHub·點這里GitEE·點這里☆☆☆☆☆
08大數據系列、存儲、組件、計算等框架GitHub·點這里GitEE·點這里☆☆☆☆☆

總結

以上是生活随笔為你收集整理的编程体系结构(07):JavaEE之Web开发的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。