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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

javaWeb发展历史

發布時間:2023/12/31 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 javaWeb发展历史 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

javaWeb發展歷史

  • 前述-BS架構與CS架構
    • 1.1 CS架構
    • 1.2 BS架構
  • 2 JavaWeb發展歷史
    • 2.1 servlet之前
    • 2.2 Servlet出現(純Servlet開發)
    • 2.3 JSP(純JSP開發)——也叫model1第一代
      • 2.3.1 JSP+JavaBean(Model1第二代)
      • 2.3.2 Servlet+JSP+JavaBean(Model2)
    • 2.4 JavaWeb經典三層框架
    • 2.5 框架階段
      • 2.5.1 Struts
      • 2.5.2 Spring
      • 2.5.3 SpringMVC
  • 小計

前述-BS架構與CS架構

1.1 CS架構

產品:在C/S結構的情況下,不同的服務需要安裝不同的客戶端軟件,比如QQ、迅雷、Foxmail。這種情況下安裝的軟件會越來越多,同時也有許多弊端,比如A出差,需要在B電腦上查收郵件,但是B電腦并未安裝Foxmail等類似的客戶端軟件。

1,數據傳輸流程

1)、客戶端軟件產生數據,存放于客戶端軟件的內存中,然后調用接口將自己內存中的數據發送/拷貝給操作系統內存
2)、客戶端操作系統收到數據后,按照客戶端軟件指定的規則(即協議)、調用網卡發送數據
3)、網絡傳輸數據
4)、服務端軟件調用系統接口,想要將數據從操作系統內存拷貝到自己的內存中
5)、服務端操作系統收到4的指令后,使用與客戶端相同的規則(即協議)從網卡接收到數據,然后拷貝給服務端軟件

2,cs架構圖
CS:(Client/Server,客戶端/服務器模式),桌面級應用 響應速度快,安全性強,個性化能力強,響應數據較快

1.2 BS架構

1,通信流程
具體參考一個請求到響應的過程

2,BS架構圖
BS:(Browser/Server,瀏覽器/服務器模式),web應用 可以實現跨平臺,客戶端零維護,但是個性化能力低,響應速度較慢。


2 JavaWeb發展歷史

2.1 servlet之前

servlet大多數人還是了解的,也還在使用,這里就從servlet說起吧。傳說在上世紀90年代,因為nternet和瀏覽器的飛速發展,使得基于瀏覽器的B/S模式隨之火爆發展起來。最初,用戶使用瀏覽器向WEB服務器發送的請求都是請求靜態的資源,比如html、css等。 但是可以想象:根據用戶請求的不同動態的處理并返回資源是理所當然必須的要求,例如用戶提交一些東西,服務器就能按提交的內容反饋用戶不同的效果。所以人們應該非常迫切想要推出一項技術來實現動態的處理, java 為了應對上述需求,促進了servlet技術誕生。

2.2 Servlet出現(純Servlet開發)

SUN公司剛剛推出JavaEE(Java企業版)時,推出了Servlet這個東西,命名就是Service+Applet,即服務小程序。Servlet可以說是Java技術中最早的Web解決方案,Servlet與普通Java類的編寫非常類似。在Servlet中可以通過挨著行輸出Html等語句來實現頁面的樣式和輸出,數據的動態功能當然也就實現了。表現、邏輯、控制、業務全部混在Servlet類中。下面給出一個簡單例子來直觀感受一下。

public void doGet(HttpServletRequest request,HttpServletResponse)throws IOException,ServletException {response.setContentType("text/html;charset=gb2312");PrintWriter out = response.getWriter();out.println("<html>");out.println("<head><title>Hello World!</title></head>");out.println("<body>");out.println("<p>Hello World!</p>");out.println("</body></html>"); }

這樣就動態的生成了一個內容為Hello World!的HTML頁面在瀏覽器上顯示。
注意:這里所有代碼的實現都在servlet這個類里實現,沒有html,沒有前端

一項技術的出現必然解決了一些現存的問題,但是我們知道servlet之后還有好些技術來替代在servlet中生成HTML頁面的方式,那就說明servlet還存在痛點。從上面代碼中我們可以看到servlet編程其實很繁瑣:

servlet代碼有大量冗余代碼,out輸出就得寫上百遍;

開發servlet必須精通網頁前端和美工,你得非常不直觀的在Servlet中寫前端代碼,這使得實現各種頁面效果和風格非常困難。
對于后端來說,所有的業務邏輯、頁面跳轉、央視表現全部混雜在同一個類中,并且一項業務一般只有一個Servlet類與其對應,實在是….太麻煩了。

所以為了解決這些問題(真慶幸晚生了好多年),sun公司借鑒 微軟的asp,正式推出了JSP(servlet1.1)

2.3 JSP(純JSP開發)——也叫model1第一代

經過純Servlet開發的噩夢之后,Sun公司又推出(或者說是倡導)了JSP技術,全稱是Java Server Page,JSP中采用HTML語言直接生成界面,還可以在界面中使用<% %>腳本標識嵌入Java代碼,揪其本質也是最終生成一個Servlet類來編譯解析。如果要開發具有大量網頁內容的網站,可以先使用網頁編輯工具編寫網頁,然后在網頁中嵌入處理代碼即可。再來一個簡單的例子:

<html><head><title>測試</title></head><body>顯示的內容是:<% String aa= “hello” ; out.println(aa); %></body> </html>

注意:此時所有的代碼實現都在jsp里實現,包括調用數據庫的操作

雖然JSP可以實現網站的快速開發,但依然存在缺點:網站的輸入輸出、處理、控制全部夾雜在一起,維護不方便,即使只需要修改該頁面的一個簡單按鈕文本,或者一段靜態的文本內容,也不得不打開混雜的動態腳本的頁面源文件進行修改。當網站中需要進行大量的處理代碼的時候,JSP文件將很難維護,并且代碼也不容易共享。

前端開發人員需要看大量他看不懂的后端代碼;
同樣,servlet開發人員也要在復雜的前端代碼中找到其能寫servlet代碼的地方

因為JSP在編寫網頁方面具有優勢,而編寫處理代碼存在很多問題,所以人們把JSP中的處理代碼使用JavaBean來實現。于是出現了JSP+JavaBean的開發模式(javaBean這里負責業務邏輯和實體類模型)。

2.3.1 JSP+JavaBean(Model1第二代)

這里就要首先弄清楚JavaBean到底是啥?JavaBean 是一種JAVA語言寫成的可重用組件。為寫成JavaBean,類必須是具體的和公共的,并且具有無參數的構造器。JavaBean 通過提供符合一致性設計模式的公共方法將內部域暴露成員屬性,set和get方法獲取(百度)。其實可以理解就是Java類,這里我理解為JavaBean的出現作為和數據庫交互的類,Jsp頁面里邊中寫部分Java代碼用于轉發等操作以及HTML頁面的生成代碼,而獲取數據的方式以及業務邏輯(這里的業務邏輯就是非請求轉發部分的代碼)則通過JavaBean來實現
javabea的功能:封裝數據和封裝業務邏輯
整體結構

這種開發模式有一個簡單的分層 JSP:表現層、控制層; JavaBean:模型層 利用我們現在熟悉的MVC模型的思想去看,雖然編寫代碼十分容易,但Jsp混淆了MVC模型中的視圖層和控制層, 高度耦合的結果是Jsp代碼十分復雜,后期維護依舊困難。由原有的Model1第二代開發模式轉變成Model2開發模式,即Servlet+JSP+JavaBean。同時也使得在Web項目中將MVC設計模式實現。

2.3.2 Servlet+JSP+JavaBean(Model2)

Model1第二代雖然在一定程度上解耦了,但JSP依舊即要負責頁面控制,又要負責邏輯處理,職責不單一!此時Model2應運而生,使得各個部分各司其職,Model2是基于MVC模式的。Model2的開發模式是:Jsp+Servlet+JavaBean的模式,它和Model1不同的是,增加了Servlet。

在這種開發模式下,JSP頁面中就可以不用任何的<%%>語句了,包括<%=%>全部用EL表達式來代替,列表的遍歷和條件判斷等(Java中的for循環和if語句)也可以通過JSTL來代替。 這樣的話視圖層相比較之前的開發模式來說要薄得多的多,JSP中不涉及任何的業務邏輯,前端人員修改樣式也十分方便。這里可以理解為JSP為MVC設計模式中的V,即視圖。

控制層通過Servlet來實現,獲取前臺傳的參數、控制頁面跳轉,封裝對象、向前臺傳輸對象或者參數。并且可以由自己設計,設法用一個Servlet類實現該模塊的所有功能的頁面跳轉。這里可以理解為Servlet為MVC設計模式中的C,即控制器。

但這里要說明的是Model2并不是一個完全標準的MVC設計模式,因為JavaBean還過于臃腫,并不能完全作為M層存在,所以將JavaBean中的封裝業務功能再一次進行分割:業務邏輯、數據持久化。

2.4 JavaWeb經典三層框架

三層架構:

表現層(Web層):通俗說就是用戶所能看到的直觀的界面。其作用就是接收用戶提交的請求數據,以及將程序對用戶請求所產生的響應數據反饋給用戶。目的就是為用戶提供可交互的操作界面。所以,表現層就像已經搭好的積木。

業務邏輯層:簡單講就是“具體問題,具體分析”。它根據用戶的不同請求而做出不同響應的處理。可以說是對數據層的一種整合方式。所以,就如同每個人會根據自己的喜好搭建不同的積木一樣,業務邏輯層代表的就是搭積木的方式。

數據訪問層(持久化):它只是提供對數據庫操作的多種途徑。不同的數據就好比形狀各異的積木,而數據訪問層就好比取出或放回這些積木的動作。

MVC設計模式:

模型(Model):封裝的是數據源和所有基于對這些數據的操作。在一個組件中,Model往往表示組件的狀態和操作狀態的方法。

視圖(View):封裝的是對數據源Model的一種顯示。一個模型可以由多個視圖,而一個視圖理論上也可以與不同的模型關聯起來。

控制器(Control):封裝的是外界作用于模型的操作。通常,這些操作會轉發到模型上,并調用模型中相應的一個或者多個方法。一般Controller在Model和View之間起到了溝通的作用,處理用戶在View上的輸入,并轉發給Model。這樣Model和View兩者之間可以做到松散耦合,甚至可以彼此不知道對方,而由Controller連接起這兩個部分。

至此,頁面的表現由jsp實現,轉發控制由servlet實現,業務邏輯寫在業務邏輯層,操作數據庫部分寫在持久化層,封裝數據放在bean層, 分工明確,各司其職。Model1、Model2、三層是在解耦的基礎上一步步進化而來,通過解耦我們可以進行進一步的抽象,以應對現實需求的變動。這里要說的就是,從servlet一直到三層架構的轉變,其實都是為了實現高內聚,低耦合。一步一步將各個功能分配到不同的地方實現。

2.5 框架階段

倡導了MVC思想的jsp+javabean+servlet出現,也存在問題:

jsp頁面中嵌入了很多java代碼,使得結構很亂;
對于大型項目,servlet過多,轉向頻繁,流程,配置等不易集中管理

因而出現了struts框架

2.5.1 Struts

2001年6月,struts1.0出現,struts針對jsp推出了一套struts標簽,從而使得jsp中沒有了Java代碼,結構清晰,功能強大。針對servlet,它提供了Action類來代替了servlet,這個Action類具有servlet的功能,并且能夠進行一些請求過濾和自動轉碼的功能。

2.5.2 Spring

原本已經開起來很完美了,但是又有一個問題,就是我們在Action調用DAO、Java bean等對象的時候都需要在自身代碼中構建它們的對象來使用,這樣增加了程序的耦合性,這與我們:“高內聚、松耦合”的思想不符合,那么怎么解決這個問題呢?因而出現了Spring框架。

Spring框架有兩大功能:IOC(控制反轉)和AOP(面向切面的編程),其中IOC就是說:當一個類中想要調用另外一個類的對象時,不需要再通過new 關鍵字來創建,而是由Spring框架來負責:創建、分配和管理,從而降低了程序中的耦合性。而AOP可以用來做一些日志的打印和輸出,用于提示程序執行過程中的一些具體信息等。

2.5.3 SpringMVC

最后struts和Spring的整合,由于每一個bean都要在Spring中注冊,每一個URL都要在struts配置文件中配置。當bean很多和URL對應的請求很多的時候,配置文件無疑會是很龐大的,這個就會使得配置起來很麻煩的費力。那么還有沒有更好的辦法使得能夠結合Spring的功能和struts的功能,但是又可以使配置文件不會批量的增加?因而SpringMVC出現了

SpringMVC通過“基于注解”的方式代替了struts,并且通過Controller類來代替和實現了Action的功能。由于是基于注解的,所以很多的配置信息放在了Controller類中配置,從而降低了.xml文件的配置復雜度。

小計

1,Javabean既可以封裝數據同時也可以封裝業務邏輯,那它的封裝業務邏輯和在servlet寫業務邏輯有什么區別嗎?
Servlet中的業務邏輯也可以說是業務管理,是直接與前臺頁面相關聯的,一般都是和請求轉發有關。而javabean中的業務邏輯主要還是直接或間接與訪問數據庫有關的代碼。
2,JavaBean的發展

3,至此,頁面的表現由jsp實現,轉發控制由servlet實現,業務邏輯寫在業務邏輯層,操作數據庫部分寫在持久化層,封裝數據放在bean層,

總結

以上是生活随笔為你收集整理的javaWeb发展历史的全部內容,希望文章能夠幫你解決所遇到的問題。

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