91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

走進JavaWeb技術世界1:JavaWeb的由來和基礎知識

發布時間:2020-07-15 09:26:29 來源:網絡 閱讀:187 作者:黃小斜 欄目:開發技術

本系列文章將整理到我在GitHub上的《Java面試指南》倉庫,更多精彩內容請到我的倉庫里查看

https://github.com/h3pl/Java-Tutorial

喜歡的話麻煩點下Star哈

文章首發于我的個人博客:

www.how2playlife.com

本×××術江湖】的《走進JavaWeb技術世界》其中一篇,本文部分內容來源于網絡,為了把本文主題講得清晰透徹,也整合了很多我認為不錯的技術博客內容,引用其中了一些比較好的博客文章,如有侵權,請聯系作者。

該系列博文會告訴你如何從入門到進階,從servlet到框架,從ssm再到SpringBoot,一步步地學習JavaWeb基礎知識,并上手進行實戰,接著了解JavaWeb項目中經常要使用的技術和組件,包括日志組件、Maven、Junit,等等內容,以便讓你更完整地了解整個JavaWeb技術體系,形成自己的知識框架。為了更好地總結和檢驗你的學習成果,本系列文章也會提供每個知識點對應的面試題以及參考答案。

如果對本系列文章有什么建議,或者是有什么疑問的話,也×××術江湖】聯系作者,歡迎你參與本系列博文的創作和修訂。

<!-- more -->

什么是 Java Web

如果你是70、80后的程序員,你一定要看一看這篇文章,保證滿滿的回憶。如果你是90后,那你更要看看這篇文章,因為你能找到java web發展的歷史。

言歸正傳,Java語言能長期霸占語言排行榜一個重要的原因就是強大的web開發能力,web開發是java的基石(在EJB推出的時候當時的Sun用基石來描述EJB),所以了解java web開發原理是非常重要的。如果僅僅跟大家聊java web開發原理未免有點單薄,今天我將把java web開發包含的主體內容跟頭條的讀者一起分享一下(一直計劃寫關于java web的文章,一直也沒時間寫,今天就當時開個頭吧)。

Web開發的歷史

web開發的歷史其實并不久遠,要搞清楚java web開發的特點(主要是優點),首先要了解web開發的歷史(簡單的回歸一下)。早期的web是非常簡單的結構,用戶發出請求(request),服務器給出回應(response),這個時期的web應用,我們稱為web site(網站),特點是一些列靜態內容的集合。看一個圖示:

走進JavaWeb技術世界1:JavaWeb的由來和基礎知識

圖中的服務器保持了一系列html腳本來響應用戶的請求,可以說這個時期的web應用還是比較簡單的,但是卻確立了兩個重要的對象:一個request(代表請求),另一個是response(代表回應)。如果把web開發的歷史比喻成一部美國大片的話,那么request和response絕對是這部大片的那女主角,而且每一部都是不可或缺的主角(簡單的說就是死不了)。

看到這個圖,不知道第一批從事web開發的80后是否和我一樣,已經有點感觸了,當年為了搞清楚這個結構,曾經連續多少個通宵做實驗(實驗環境比較惡劣)。沒關系,這僅僅是個開始,我想當你看完這篇文章的時候,你會淚流滿面的(相信我)。為了配合一下這張結構圖,在web發展過程中,有一個小插曲,就是在web site向web application發展的過程中,出現了一個小“玩意兒”,就是applet,很多人了解java都是從使用java applet開始的(70,80后那一批程序員)。當時風靡校園(我當時在讀大一)的網易聊天室,哎呀那個火啊(大家回憶一下你在學校機房上網時的興奮),這個聊天室就是采用了applet構建的,當時applet給靜態頁面一個動態交互的可能,著實火了一段時間。現在知道applet的程序員,你已經暴露年齡了。看一張圖片吧:

走進JavaWeb技術世界1:JavaWeb的由來和基礎知識

我想這個時候,淚點低的70、80后已經有點濕潤了吧。濕潤的,自覺在這里停留一分鐘,對著屏幕來張合影,發個朋友圈。

過了這個插曲,真正的三層web開發來了,一個里程碑式的web處理方式CGI,看一張圖:

走進JavaWeb技術世界1:JavaWeb的由來和基礎知識

CGI的推出,使得web開發正式進入了動態處理時代,服務器能與客戶有真正意義上的交流了,有能存儲數據的數據庫了,雖然CGI的使用周期并不長,但是一定要紀念一下它,畢竟它是里程碑式的變革。java web技術正是踩著CGI的肩膀來到了廣大程序員的面前,java web解決了CGI的性能問題。CGI是以進程為單位管理請求的,而java web則是以線程為單位,處理能力更強,占用的資源更少,這個核心的組件就是Servlet。看一組資源占用圖,先看CGI的:

走進JavaWeb技術世界1:JavaWeb的由來和基礎知識

再看一下java web中的servlet資源圖:

走進JavaWeb技術世界1:JavaWeb的由來和基礎知識

孰優孰劣一目了然,Servlet解決相同數量的請求,卻占用較少的系統資源,這就是為什么廣大程序員拋棄了CGI轉向java web的原因。

另外,開發一個Servlet并不復雜,看一個Servlet編寫的HelloWorld應用:

走進JavaWeb技術世界1:JavaWeb的由來和基礎知識

這個代碼結構是不是很親切,是不是很有Coding的感覺,其實Servlet就是個java 類而已,只不過增加了幾個限制而已,所以開發一個Servlet并不復雜。然后就是把它部署到web服務器上(Tomcat這個老人家現在身體依然硬朗!),然后就等待客戶的請求就可以了。這是Servlet的三層部署圖:

走進JavaWeb技術世界1:JavaWeb的由來和基礎知識

java web開發的技術體系還包括javabean和jsp,采用MVC結構來組合這三個技術是java web開發的基礎內容,先看一下MVC的功能圖:

走進JavaWeb技術世界1:JavaWeb的由來和基礎知識

再看一下組合使用Servlet+javaBean+JSP的Model2開發結構:

走進JavaWeb技術世界1:JavaWeb的由來和基礎知識

這個結構是標準的Java web開發結構,現在是不是很少能看到這么“干凈”的描述圖了?以上就是標準的java web 開發的歷史描述,當然這并不是說這些內容已經過時了,反而它一直是官方的標準解決方案。只不過web發展迎來了另一個階段,繁榮的開源架構時代來了。。。

開源框架時代

這個時代的典型代表就是Struts、Spring和Hibernate,簡稱SSH。

嚴格的說,這部分內容并不是官方解決方案,但是這些方案卻得到了廣大程序員的擁護,一方面原因是EJB的方案太重了,另一方面開源架構使用起來非常方便和靈活,所以從03年以后這些開源框架得到了普通的使用。

下面我簡單描述一下這三個框架:

Struts基于MVC結構的解決方案,分為struts1(已經淘汰了,用過Struts1的程序員已經老了)和struts2兩個版本,和Python一樣,這兩個版本不兼容,目前Struts2的最新版本是2.5.14.1,簡單的說Struts就是構建了現成的MVC框架,程序員往這個框架里加代碼就可以了,使用起來非常方便。

Hibernate框架完成了面向對象與面向關系的映射,讓java程序以面向對象的方式操作面向關系的數據庫。整體結構基于DAO進行擴展,很多操作只需要配置一下就可以了,極其方便。

Spring提供了javaBean的容器,池化了javabean,提高了性能,而且核心代碼不到2M,小巧且強大。

關于這三個框架我在頭條將寫專門的文章介紹,今天就不再進行擴展了。

今天看到這個問題,有感而發,原來我們80后真的老了,80后的程序員,看到這篇文章,有沒有所感觸×××一起回憶,再一起繼續奮斗!

Java Web基礎知識

一、HTTP協議

HTTP(超文本傳輸協議),它是一種主流B/S架構中應用的通信協議。具有以下特點:

1、無狀態

服務端不會記錄客戶端每次提交的請求,服務器一旦相應客戶端之后,就會結束本次的通信過程。客戶端下一次的請求是一個新的 連接,和上一次通信沒有任何關系。

2、簡單靈活

HTTP是基于請求(request)和響應(response)的模型

3、支持客戶端與服務端

支持主流的B/S架構的通信以及C/S架構的通信。

注意:C/S架構可選的協議有多種,例如:TCP/IP,UDP,HTTP

? 而B/S架構通常只支持HTTP協議

二、服務器

1、概念

服務器通常由硬件和軟件部分構成,統一對用戶提供多種不同的服務。

1、硬件:包括響應的CPU、內存、磁盤等等

2、軟件:包括操作系統、運行環境、服務器軟件、數據庫等等

2、web服務器

web服務器是提供服務端程序運行的一個環境,它本身也是一個軟件。

例如:將我們編寫HTML文件放入到web服務器中,那么外界就可以通過瀏覽器訪問我們的html頁面

常見的web服務器有Apache,Tomcat、Jetty、Nginx等等。

而Tomcat、Jetty這些web服務器更準確的說是一個Servlet容器。

三、JavaWeb項目結構

項目根目錄,例如:myweb、ch01 ? ? 通常存放靜態資源文件(如:html等等)
? WEB-INF ? 這個目錄是當前項目私有的一個文件夾,只能提供給項目內部訪問,對于客戶端來說是訪問不到了,通常這個目錄下存放的是Java源代碼、編譯后的字節碼文件以及Servlet的核心配置文件web.xml
? ? src 存放java源代碼的目錄
? ? classes 存放編譯后的字節碼文件
? ? lib lib目錄存放當前項目所需要的jar文件
? ? JSP 用于存放JSP動態頁面
? ? web.xml 項目的配置文件,用于配置Servlet的請求映射、過濾器、監聽器等等信息。每一個web項目都對應一個web.xml配置文件
? META-INF ? 配置應用程序、擴展程序、類加載服務等等

參考文章

https://blog.csdn.net/shanhanyu/article/details/80515791
https://www.jianshu.com/p/d9b770a78da1
https://www.cnblogs.com/albertrui/p/8427661.html
https://blog.csdn.net/qq_41911570/article/details/83279327

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

廊坊市| 治多县| 扶沟县| 错那县| 桐庐县| 临沂市| 漠河县| 信丰县| 曲周县| 灵台县| 将乐县| 正宁县| 遂平县| 海原县| 临颍县| 石渠县| 芜湖市| 新龙县| 平谷区| 高淳县| 安丘市| 行唐县| 华蓥市| 乐亭县| 南投市| 大厂| 集安市| 酒泉市| 蒲城县| 大埔县| 绥宁县| 恩平市| 济宁市| 白河县| 红原县| 绍兴市| 临沭县| 图片| 洛南县| 河南省| 敦煌市|