精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

詳解Java開發Web應用程序的底層原理

開發 后端
前面一篇文章,我從整個應用程序的整體以及跟運行環境的關系簡單聊了一下我們現在常用的Spring框架的設計基礎和原則,其中主要是控制反轉和依賴注入,以及容器化編程等概念。

[[285627]]

前言

前面一篇文章,我從整個應用程序的整體以及跟運行環境的關系簡單聊了一下我們現在常用的Spring框架的設計基礎和原則,其中主要是控制反轉和依賴注入,以及容器化編程等概念。

這里我不想去復述這些概念的定義,因為那些東西網上隨便都能百度到,我想通過我的描述將這些概念串聯起來,讓大家更好的去立即它們知道為什么要這樣去做,我們每天開發使用的框架到底是個什么東西,它的設計思想以及規范的由來。做到知其然還知其所以然,能夠讓我們在開發過程中更好的去使用它們,面對問題知道它大概的解決方向。

本文我想繼續沿著前面的思路來談談基于Web的應用程序需要使用Spring框架的容器化管理開發相關的理解。

Web應用程序與Servlet規范

當然說起應用程序開發來,我們都熟悉,現在應用程序有很多種分類,最初的控制臺程序,服務組件程序,到桌面應用程序,到基于HTTP訪問協議的web應程序等。

其實它們的本質就是基于某種輸入/輸出過程處理的程序。比如我們最常見但是實際應用中很少的控制臺應用程序,它就是基于標準的I/O實現類的應用程序,接收命令行作為輸入流,控制臺作為標準輸出形式的應用程序。它的運行只需要有一個進程殼來構建輸入和輸出流即可。

而對于我們今天要詳細談的Web應用程序,其實它是起源于一種運行在操作系統上在組件程序,只不過它們的數據輸入輸出是基于網絡數據流的。

 

網絡基礎

從基礎的網絡知識我們知道,網絡上傳輸數據需要通過一個7層模型,也就是從最初的網絡硬件抽象定義到最高級的應用程序這個層級穿透而來。

要將兩臺物理的機器連接起來,我們需要對兩個機器進行標識命名,這些靠的是IP和端口,而網絡鏈路上傳輸的數據都是字節數據流,要知道這些數據流是沒有什么具體格式的,但是到了網絡層時,我們必須要知道它來自哪里要發給誰,所以我們需要對其進行一定的格式限制,這種抽象是通過電報格式定義來完成的。

比如我們需要定義發送的長度,標記為,是否有順序等,這些字節流就被包裹成一個個數據報文,然后我們必須定義每個發送端和接收端之間的約定,就是告訴對方我發送的是什么,你該如何接收它,比如多長是一個完整數據包,數據包的先后順序等,這些都是在我們知道了兩個通信店的IP地址以及如何連接也就是我們說的傳輸控制協議TCP的基礎上我們定義了更高級的應用協議,比如HTTP,FILE,MAIL等協議,當然最常見的協議就是HTTP協議了。

HTTP協議

它是在基礎的報文格式定義基礎上的一個更高級的抽象,它能告訴通信雙方我們通信的數據如何解析。就拿超文本傳輸協議來說吧,它規定了頭信息和內容信息,它還規定了處理這些信息的方法以及結果反饋代碼,這就是我們常說的GET,POST,DELETE,OPTIONS等,返回代碼比如從100,到500系列,當然這些已經進入到了應用協議部分。

我們所有的網絡應用程序都是基于點對點的通信的應用。也就是說要創建這樣的程序我們必須首先標識出能夠連接的兩個點,首先是主機名或者IP地址,然后就是我們要連接的具體應用,它一般會體現在哪個端口上或者端口下面的哪個路徑上。有了對等點的定義描述,我們就可以定義其控制傳輸的抽象,套接字概念。

 

編解碼問題

其實質上就是創建一個輸入輸出流的通道,網絡數據流都是通過Socket這個概念來定義和描述的。而我們編程,特別是Java的編程,我們只需要在我們應用程序所管理的空間中定義一個可以連接網絡Socket的通道,同時在內存中劃出一塊緩沖區,讓通道能夠有可操作的空間,然后利用不同緩沖區之間數據流動的過程對數據進行相應形式的變化,比如最基礎的是如何將網絡傳輸的字節流,轉變為我們高級語言定義高級數據類型的過程,這個過程通常被稱為解碼,同樣當我們需要將應用程序能夠理解的各種數據類型轉變為可用通過網絡傳輸給其它地方的字節流時,這個過程被稱為編碼。

因為硬件能夠搞懂的目前就兩種狀態,這兩種狀態用數字表示就是二進制的0和1,所以我們使用的眾多高級編程語言里,哪些復雜的數據類型都需要轉變成二進制的字節形式才可以被CPU理解,被網絡硬件傳輸。因此我們的編程不可避免的就需要去完成這種編碼和解碼處理。當然隨著高級語言的不斷進化,各類常用的處理都已經變身為各種語言標準的類庫或者功能包了,我們只需要拿來用即可。除非你想編寫自己的通信協議或者定義特殊的數據格式,否則對于編解碼來說一般不會涉及到。

了解了所有應用程序都是對數據流的處理這個基礎后,我們再來看Web應用程序,它是一種基于網絡的服務和獨立訪問結構的應用程序,也就是我們常說的Server-Client模式。

關于Servlet

這里之所以定義出服務端和客戶端其實主要還是一個功能上的區分,但是底層實質上還是兩臺計算機的連接,通過字節流交換數據,通過協議來規定傳輸控制和數據解碼,而我們的web應用程序就是基于HTTP協議的網絡應用程序,因為涉及到的網絡處理,所以技術人員將有關網絡處理部分獨立出來規定了很多規范,比如端點描述規范,數據傳輸格式規范,如何利用所在計算機操作系統環境的設置的規范等,這些反應到Java編程里就是我們都熟悉的Servlet規范。

這個規范首先告訴我們基于Web的應用程序的基礎網絡部分需要在每臺聯網計算機上有一個角色來負責,我們稱這個角色為容器,或者說是web服務器。

它就是要實現對計算機網絡的標識,連接,規定解析數據格式等工作,當然后來我們將其發展成綜合性的服務器,一邊要處理HTTP協議,一邊還可以通過一些接口更操作系統進行交互調用操作系統的功能組件來處理。比如網卡,文件的輸入輸出控制器等等。

我們可以簡單的描述一下一個Servlet容器的實現功能,首先它需要對運行自己的主機信息有一個抽象,能夠讓運行的程序了解它以及使用它可以使用的資源。

然后,它需要將基于網絡的字節流進行高級語言數據類型的轉換,比如將基于字節流解析成遵循HTTP協議的數據格式,HttpRequest,HttpResponse以及HttpServletRequest,HttpServletResponse等。

同時將對于宿主服務器環境參數抽象后引入到該容器中用于跟我們的應用程序交互。所以只要實現了Servlet的規范,就可以作為操作系統和我們應用程序之間的媒介。

 

Servlet容器

市場上有許多成熟Servlet容器產品比如Tomcat,Jetty,Weblogic,Glassfish等。這里面有很多輕量級的,只負責將輸入的網絡數據流轉換為我們應用程序能夠理解和處理的數據形式,而這個過程都是通過創建輸入和輸出數據流的過程來完成的。有一些商業應用的實現附加的內容比較多,比如對系統環境資源的抽象繼承,比如數據庫連接資源,文件輸入輸出組件等。

我們開發的應用程序根據我們設計開發原則,我們首先將應用分解能功能組件,將每個功能組件設計成一個可以在容器中獨立運行的組件,該組件就是HttpServlet請求處理組件。

我們會根據請求的目標地址來標記各種功能,然后將這些唯一的目標地址和HTTP方法來標識運行的目標組件,而這個組件可以通過容器來計算機環境進行交互。

所以Servlet的頂層抽象就是一個service方法,該方法的輸入參數就是由容器進行封裝過的請求體和回復體以及環境變量對象等。

當然我們會根據HTTP協議來具體的細化其支持的HTTP方法,所以我們可以來通過doGet,doPost等方法來完成具體的處理。

有了我們這樣一個基礎規范的功能實現,我們就有了一個可以包容和管理具體功能應用組件的容器,這個容器就是我們所說的web服務器。

如果你清楚了Servlet規范的本質就是對網絡數據流的封裝和編解碼處理,你可以自己動手從基礎的二進制數據流的封裝和編解碼轉換開始設計自己的web應用服務器。

也就是去實現點對點的通信處理,這里說一下,目前的微服務架構的基礎就是對web服務器基礎網絡實現的重新分解設計。

Servlet 3.0 引入了反應流概念,就是通過接收方控制來管理大批量數據流的輸入輸出。

 

Spring框架和Web應用設計

了解了上面有關Web應用程序的結構后,我們再來看看Spring框架在web應用程序開發中扮演的角色是什么。

我們知道Java企業級開發中有Java EE框架,其實就是基于Servlet容器來的,它只是將企業級應用開發的所有基礎功能都組件化了,比如容器化依賴注入,JPA等,當然必須有匹配的Web應用服務器來支持其運行。

同樣的Spring框架的核心部分就是組件容器,它的功能是通過更加有效更加輕量級的去組織和管理應用程序各功能組件。

其巧妙之處在于將整個組件設計成了一個Servlet組件實現,這就是Spring框架里最為核心的DispatchServlet,跟所有Servlet定義規范一樣,我們需要用一個請求的目標路徑來標識這個Servlet,然后讓Servlet容器在啟動時將它加載,并綁定到目標路徑上,以此在一個對根目錄請求的處理器中啟動一個應用程序組件管理容器,并將其處理器handler實現成一個前端控制模式,負責對其根目錄后的URL部分進行識別和匹配,以此來實現對Spring容器中負責處理后續URL資源的處理器的路由。

簡單說來,就是當外部訪問請求通過網絡到達Web服務器時,會將其根據Servlet規范和HTTP協議將其解碼成HttpServlet的請求和回復數據結構類型,然后解析其訪問的目標資源URL,來匹配我們在Spring容器中注冊的用于處理它的組件和方法名稱,從而完成對該Servlet請求的處理。

由于現在我們開發應用程序時除了連續的文件上傳下載處理外,大多都是將二進制轉換為JSON數據格式或者XML格式,如此我們只需要在Spring容器中注冊相應的處理組件即可。

總結

說到這里想說的東西還沒說完,但是文章長度已經超出了預期,所以就此打住吧,只能在接下來另辟文章繼續講了。

本篇文章簡單的講了一下從Web應用程序的特點,以及能夠輔助Web應用程序運行的基礎容器服務規范,進而到了Spring框架的設計原則和結構實現設計。

這里希望能夠帶大家從Web應用程序有別于其他類型的應用程序的特點開始,到支持Web應用程序運行的Servlet規范實現,在到Spring框架應用在Web應用程序時扮演的角色等內容過了一遍。接下來我會繼續沿著這個思路,講一下MVC模式,以及反應流處理模式等內容。

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2013-08-08 09:48:10

Web

2009-09-22 12:22:54

ibmdwLotus

2013-11-19 15:35:01

2011-07-26 09:41:23

iPhone xcode Mac OS X

2010-12-31 15:29:54

Web應用程序

2009-04-01 14:33:33

2009-07-09 16:47:26

Servlet的Web

2011-05-06 15:31:28

moblweb開發DSL

2011-05-24 10:30:31

PythonNetBeans ID

2010-05-20 09:48:36

2011-03-22 14:12:17

LAMP

2012-03-15 15:35:51

iUI框架EclipseiOS Web

2011-06-01 13:20:29

ipad平板電腦移動開發

2012-02-21 22:01:24

Windows 8Web開發

2012-04-19 09:34:21

ibmdw

2009-01-16 09:22:40

Web應用程序Web程序管理Web服務

2022-12-25 18:03:13

Debug原理軟件

2009-02-27 17:00:25

2011-11-29 16:07:36

移動Web開發框架移動開發

2015-01-06 09:59:59

云應用程序Java開發SQL
點贊
收藏

51CTO技術棧公眾號

亚洲小视频网站| 手机成人在线| 国产成人无码一区二区三区在线| 大陆精大陆国产国语精品| 性做久久久久久久免费看| 欧美日韩免费高清| 在线免费av片| 在线国产日韩| 伊人久久综合97精品| 久久久久久久久久毛片| 忘忧草在线日韩www影院| 中文字幕av一区二区三区免费看 | 午夜影院在线观看国产主播| 欧美经典一区二区| 国产精品免费区二区三区观看 | 日韩国产欧美一区| 国产色片在线观看| 另类图片国产| 欧美激情中文网| 天天舔天天操天天干| 成人在线超碰| 欧美精品乱码久久久久久| 91九色在线观看视频| 伦xxxx在线| 国产亚洲成av人在线观看导航| 亚洲影视九九影院在线观看| 无码人妻一区二区三区线| 欧美精品观看| 色99之美女主播在线视频| 色呦呦一区二区| 视频一区中文字幕精品| 欧美日韩精品一区二区天天拍小说 | 手机版av在线| 亚洲精品在线影院| 婷婷久久综合九色综合绿巨人| 天天操天天干天天玩| 户外极限露出调教在线视频| 白白色 亚洲乱淫| 91精品视频在线播放| 精产国品一区二区| 亚洲永久网站| 久久久久久九九九| 国产精品国产三级国产传播| 国产日产精品_国产精品毛片| 亚洲成av人乱码色午夜| 日本xxxx免费| 免费欧美网站| 精品蜜桃在线看| 在线成人精品视频| 日本高清久久| 日韩女同互慰一区二区| 亚洲视频在线不卡| 国产人与zoxxxx另类91| 欧美精品一卡两卡| av在线网站免费观看| 精品三级在线| 欧美日本国产视频| 国产精品久久久久久久av福利| 青草综合视频| 欧美精品18+| 天天操天天干天天做| 国产亚洲人成a在线v网站| 欧美中文字幕一二三区视频| 91人人澡人人爽人人精品| 日本精品网站| 欧美喷潮久久久xxxxx| 国产九九在线观看| 日韩大陆av| 在线观看91精品国产麻豆| 污污的网站免费| 美国十次综合久久| 亚洲护士老师的毛茸茸最新章节| 亚洲欧美日本一区| 视频一区中文| 国产乱码精品一区二区三区忘忧草| 欧美日韩视频在线第一区| 日本爱爱免费视频| 欧美网站免费| 日韩免费看网站| 一起草在线视频| 国产一卡不卡| 久久精品亚洲一区| 欧美人妻一区二区| 亚洲免费网址| 国产欧美韩国高清| 狠狠综合久久av一区二区| 99久久精品久久久久久清纯| 欧美午夜免费| 黄色免费网站在线观看| 亚洲成人精品一区| av无码精品一区二区三区| 在线播放成人| 亚洲精品久久久久| 亚洲 欧美 变态 另类 综合| 亚洲大胆视频| 国产精品三级美女白浆呻吟| 国产成人精品一区二三区四区五区| 成人精品gif动图一区| 日本三级中国三级99人妇网站| 秋霞午夜理伦电影在线观看| 亚洲国产精品精华液网站| 一区二区三区国产免费| 日韩成人视屏| 亚洲一级免费视频| 久久免费在线观看视频| 日韩综合在线视频| 不卡一卡2卡3卡4卡精品在| 国产在线日本| 亚洲国产精品久久艾草纯爱| 无尽裸体动漫2d在线观看| 国产精品玖玖玖在线资源| 中文字幕一精品亚洲无线一区| 麻豆疯狂做受xxxx高潮视频| 天堂久久一区二区三区| 99高清视频有精品视频| a黄色在线观看| 香蕉成人伊视频在线观看| www.久久91| 尤物tv在线精品| 欧美劲爆第一页| 国产高清在线一区| 免费视频网站在线观看入口| 成人免费毛片高清视频| 一区二区免费在线观看| 涩涩视频在线播放| 日韩欧美在线影院| 国产wwwwxxxx| 日韩黄色小视频| 久久久久国产精品视频| 日本在线视频网址| 91麻豆精品国产91久久久久久 | 欧美影院在线播放| 狠狠综合久久av一区二区| 亚洲精品中文字幕乱码三区| 中文字幕第36页| 你懂的一区二区三区| 97超级碰碰人国产在线观看| 性一交一乱一透一a级| 亚洲另类春色国产| www.com污| 香蕉精品视频在线观看| 国产日韩在线一区| 91在线看片| 欧美日韩在线电影| 亚洲一二三精品| 男男成人高潮片免费网站| 农村寡妇一区二区三区| 一根才成人网| 亚洲欧美国产精品久久久久久久| 日韩免费黄色片| 成人丝袜18视频在线观看| 人妻无码一区二区三区四区| 日本精品一区二区三区在线观看视频| 日韩一区二区福利| 国产乱子伦精品无码码专区| 亚洲欧美日韩国产综合在线| 久久精品亚洲天堂| 亚洲激情中文| 成人片在线免费看| 超碰高清在线| 亚洲欧美日韩精品久久| 高潮无码精品色欲av午夜福利| 国产欧美日韩不卡免费| 亚洲 国产 图片| 欧美有码视频| 亚洲欧洲成人自拍| 黄色一级视频片| 亚洲黄色录像| 国产精品久久久久久久久借妻| 97电影在线看视频| 8v天堂国产在线一区二区| 午夜剧场免费在线观看| 国产69精品久久久久毛片| 亚洲人成无码网站久久99热国产| 亚洲婷婷影院| 国产在线播放91| 三级网站视频在在线播放| 亚洲高清免费观看高清完整版| 波多野结衣视频网站| 国产精品午夜免费| 国产在线a视频| 国产一区二区三区的电影| 视频一区二区三区在线观看| 国产成年精品| 78色国产精品| a√在线中文网新版址在线| 日韩一区二区三区四区五区六区| 日韩av在线播| 国产精品女人毛片| 涩视频在线观看| 日日夜夜精品免费视频| 激情五月六月婷婷| 精品一区电影| 国产欧美在线一区二区| www.成人在线视频| 久久免费在线观看| 在线观看完整版免费| 亚洲成人网av| 91中文字幕在线视频| 亚洲v精品v日韩v欧美v专区| 丁香激情五月少妇| 国产.欧美.日韩| 自拍偷拍一区二区三区四区| 在线观看视频免费一区二区三区| 性欧美大战久久久久久久免费观看| 韩国三级成人在线| 日韩免费视频在线观看| 中中文字幕av在线| 一本色道久久88综合亚洲精品ⅰ| 亚洲国产剧情在线观看| 在线观看视频91| 国产在线视频第一页| 中文字幕永久在线不卡| 国产特级黄色录像| kk眼镜猥琐国模调教系列一区二区| 天天爽天天爽夜夜爽| 日韩亚洲国产精品| 日韩午夜在线观看视频| 右手影院亚洲欧美| 丰满岳乱妇一区二区三区| 免费看国产黄色片| 日韩一级免费| 免费高清一区二区三区| 亚洲免费二区| 亚洲春色综合另类校园电影| 日韩欧美影院| 国产成人精品日本亚洲11 | 日本韩国一区二区| 日本在线观看中文字幕| 亚洲三级电影全部在线观看高清| 中文字幕黄色网址| 国产亚洲欧美一级| 性色av蜜臀av色欲av| 不卡的av网站| 黄色激情在线观看| 成人一区二区三区视频| 乳色吐息在线观看| 国产精品综合在线视频| 91亚洲一区二区| 黄网站免费久久| 国产无色aaa| 精品一区二区三区日韩| 中文字幕国产免费| 久久99日本精品| 玖玖爱视频在线| 国产在线国偷精品免费看| 中文av一区二区三区| 久久精品国产一区二区三| 亚洲欧美国产日韩综合| 日韩精品久久久久久| 不要播放器的av网站| 日韩激情视频在线观看| 天天爽天天爽夜夜爽| 看电视剧不卡顿的网站| 在线观看免费不卡av| 国产在线播精品第三| 亚洲午夜精品在线观看| 国产69精品久久久久毛片| 亚洲av成人精品一区二区三区| 99精品欧美一区| 老牛影视av老牛影视av| 国产日本欧洲亚洲| 欧美视频一区二区在线| 亚洲天堂精品视频| 久久精品性爱视频| 日韩欧美a级成人黄色| 青青国产在线视频| 欧美日韩免费视频| 国产高清第一页| 欧美精品一区二区不卡| 日韩电影免费| 自拍偷拍亚洲在线| 爆操欧美美女| 国产精品久久国产愉拍| aaa免费在线观看| 狠狠噜噜久久| 国内外免费激情视频| 久久99精品国产麻豆婷婷| 久久久精品人妻一区二区三区| 99久久精品国产导航| 大胸美女被爆操| 亚洲自拍偷拍九九九| 精品久久久久久久久久久久久久久久| 欧美电影一区二区| 特级丰满少妇一级aaaa爱毛片| 影音先锋日韩有码| 日韩av毛片| 国产精品xxx视频| 日本免费一区二区视频| 欧美不卡1区2区3区| 欧美黄在线观看| 久草精品在线播放| 国产原创一区二区三区| 久久无码人妻精品一区二区三区| 中文子幕无线码一区tr| 国产精品19乱码一区二区三区| 欧美午夜电影一区| 免费看黄色一级视频| 色99之美女主播在线视频| а√在线中文在线新版| 成人国产精品久久久| 日韩最新在线| 亚洲一区 在线播放| 日本欧美一区二区| 久久久老熟女一区二区三区91| 中文字幕一区二区三区在线不卡| 天堂网一区二区三区| 欧美一区二区三区不卡| 国内精品一区视频| 97久久精品在线| 天堂精品久久久久| 日韩一区国产在线观看| 一区二区国产在线观看| www.桃色.com| 国产精品久久久久9999吃药| 黄色在线免费观看| 亚洲成人av在线| 日本大胆在线观看| 川上优av一区二区线观看| 精品国产aⅴ| 国产精品50p| 成人午夜精品在线| 欧美偷拍第一页| 717成人午夜免费福利电影| 成人性生交大片免费看午夜| 欧美中文字幕视频在线观看| 成人在线视频你懂的| 黄色网在线视频| 国产精品一二三四五| 人人艹在线视频| 欧美亚洲高清一区| 国产中文字幕在线视频| 日本精品视频在线| 日韩精品a在线观看91| 男人添女荫道口图片| 成人精品一区二区三区四区| 熟妇人妻va精品中文字幕| 精品久久久久久久久久久aⅴ| 欧美精品自拍视频| 成人性生交大片免费| 1024手机在线视频| 欧美一区二区久久久| 成人在线网址| 91久久精品www人人做人人爽| 一精品久久久| 日本少妇激三级做爰在线| 亚洲少妇30p| 91av国产精品| 欧美成人精品在线视频| 国产精品亚洲一区二区在线观看| 亚洲一区高清| 国产一区二区视频在线播放| 91在线播放观看| 精品国产91亚洲一区二区三区婷婷| 欧美男男video| 国产一区二区高清不卡| 香蕉久久夜色精品国产| 免费网站在线高清观看| 欧美日韩一区不卡| 精品欧美色视频网站在线观看| 亚洲欧美另类人妖| 人人超在线公开视频| av一区二区三区免费| 一本色道88久久加勒比精品| 精品人妻伦一二三区久| 精品日本高清在线播放| 黄色影院在线播放| 国产精品久久77777| 色偷偷综合网| 欧美老女人bb| 黑人巨大精品欧美一区二区| 国产黄在线观看| 91丝袜美腿美女视频网站| 国内精品美女在线观看| av网站免费在线播放| 欧美日韩精品系列| 青草在线视频在线观看| 欧美日韩精品免费观看视一区二区| 日韩经典一区二区| 久草成人在线视频| 亚洲色图偷窥自拍| 日韩欧美中文字幕在线视频| 免费毛片网站在线观看| 国产欧美精品区一区二区三区| 99久久精品日本一区二区免费| 午夜精品一区二区三区视频免费看| 精品国产一级毛片| 性折磨bdsm欧美激情另类| 亚洲18色成人| 欧美激情视频在线播放| 狠狠色狠狠色综合人人| 老司机免费视频一区二区三区| 国产性生活网站| 中文字幕视频在线免费欧美日韩综合在线看 | 国产精品午夜av在线| 美女任你摸久久| 欧美精品性生活| 国产精品7m凸凹视频分类| 午夜不卡福利视频| 日本乱码高清不卡字幕|