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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Javaweb经典三层架构的演变

發(fā)布時(shí)間:2023/12/20 java 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Javaweb经典三层架构的演变 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.Javaweb經(jīng)歷了三個(gè)時(shí)期

①JSP Model1第一代?
JSP Model1是JavaWeb早期的模型,它適合小型Web項(xiàng)目,開發(fā)成本低!Model1第一代時(shí)期,服務(wù)器端只有JSP頁面,所有的操作都在JSP頁面中,連訪問數(shù)據(jù)庫的API也在JSP頁面中完成。也就是說,所有的東西都耦合在一起,對后期的維護(hù)和擴(kuò)展極為不利。

②JSP Model1第二代?
JSP Model1第二代有所改進(jìn),把業(yè)務(wù)邏輯的內(nèi)容放到了JavaBean中,而JSP頁面負(fù)責(zé)顯示以及請求調(diào)度的工作。雖然第二代比第一代好了些,但還讓JSP做了過多的工作,JSP中把視圖工作和請求調(diào)度(控制器)的工作耦合在一起了。

③JSP Model2?
JSP Model2模式已經(jīng)可以清晰的看到MVC完整的結(jié)構(gòu)了。?
·JSP:視圖層,用來與用戶打交道。負(fù)責(zé)接收用來的數(shù)據(jù),以及顯示數(shù)據(jù)給用戶;?
·Servlet:控制層,負(fù)責(zé)找到合適的模型對象來處理業(yè)務(wù)邏輯,轉(zhuǎn)發(fā)到合適的視圖;?
JavaBean:模型層,完成具體的業(yè)務(wù)工作,例如:開啟、轉(zhuǎn)賬等。

這就是javaweb經(jīng)歷的三個(gè)年代,JSP Model2適合多人合作開發(fā)大型的Web項(xiàng)目,各司其職,互不干涉,有利于開發(fā)中的分工,有利于組件的重用。但是,Web項(xiàng)目的開發(fā)難度加大,同時(shí)對開發(fā)人員的技術(shù)要求也提高了。

2.JavaWeb經(jīng)典三層框架

我們常說的三層框架是由JavaWeb提出的,也就是說這是JavaWeb獨(dú)有的!?
所謂三層是表述層(WEB層)、業(yè)務(wù)邏輯層(Business Logic),以及數(shù)據(jù)訪問層(Data Access)。?
·WEB層:包含JSP和Servlet等與WEB相關(guān)的內(nèi)容;?
·業(yè)務(wù)層:業(yè)務(wù)層中不包含JavaWeb API,它只關(guān)心業(yè)務(wù)邏輯;?
·數(shù)據(jù)層:封裝了對數(shù)據(jù)庫的訪問細(xì)節(jié);

  注意,在業(yè)務(wù)層中不能出現(xiàn)JavaWeb API,例如request、response等。也就是說,業(yè)務(wù)層代碼是可重用的,甚至可以應(yīng)用到非Web環(huán)境中。業(yè)務(wù)層的每個(gè)方法可以理解成一個(gè)萬能,例如轉(zhuǎn)賬業(yè)務(wù)方法。業(yè)務(wù)層依賴數(shù)據(jù)層,而Web層依賴業(yè)務(wù)層!?

?

1、Servlet的出現(xiàn)

? ? 上世紀(jì)90年代,隨著Internet和瀏覽器的飛速發(fā)展,基于瀏覽器的B/S模式隨之火爆發(fā)展起來。?最初,用戶使用瀏覽器向WEB服務(wù)器發(fā)送的請求都是請求靜態(tài)的資源,比如html、css等。?但是可以想象:根據(jù)用戶請求的不同動(dòng)態(tài)的處理并返回資源是理所當(dāng)然必須的要求。

? ? ?java 為了應(yīng)對上述需求,就必然推出一種技術(shù)來支持動(dòng)態(tài)需求,因此servlet技術(shù)誕生

? ? 使用Servlet技術(shù),頁面中的所有信息需要通過輸出語句來生成。下面的代碼(部分代碼)生成的頁面的內(nèi)容就是“HelloWorld!”。

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>"); }

2、Jsp的出現(xiàn)

? ?servlet誕生后,sun公司很快發(fā)現(xiàn)servlet編程很繁瑣,1)servlet代碼有大量冗余代碼,out輸出就得寫上百遍;2)開發(fā)servlet必須精通網(wǎng)頁前端和美工,你得非常不直觀的在Servlet中寫前端代碼,這使得實(shí)現(xiàn)各種頁面效果和風(fēng)格非常困難。

? ?所以,sun公司借鑒 微軟的asp,正式推出了jsp(servlet1.1)。采用HTML語言直接生成界面,在界面中使用<% %>腳本標(biāo)識嵌入Java代碼

? ?一個(gè)簡單的jsp例子

<html><head><title>測試</title></head><body>第一階段<% String str = “test” ; out.println(str); %></body> </html>

?

3、 倡導(dǎo)了MVC思想的servlet版本servlet1.2出現(xiàn)------------jsp+javabean+servlet

? ? jsp出現(xiàn)后,也存在問題,1)前端開發(fā)人員需要看大量他看不懂的后端代碼;2)同樣,servlet開發(fā)人員也在復(fù)雜的前端代碼中找到其能寫servlet代碼的地方

? ?所以,MVC思想的JSP+JavaBean+Servlet誕生了

? JSP(V):JSP完成輸入和輸出,主要使用HTML標(biāo)簽和JSP標(biāo)簽

?Servlet(C):主要完成控制,接收請求,調(diào)用業(yè)務(wù)處理(JavaBean),根據(jù)調(diào)用的結(jié)果找到一個(gè)JSP頁面對用戶進(jìn)行響應(yīng)

JavaBean(M):完成所有的處理過程

4、框架階段

? ? 倡導(dǎo)了MVC思想的jsp+javabean+servlet出現(xiàn),也存在問題:1)jsp頁面中嵌入了很多java代碼,使得結(jié)構(gòu)很亂;2)對于大型項(xiàng)目,servlet過多,轉(zhuǎn)向頻繁,流程,配置等不易集中管理,因而出現(xiàn)了struts

4.1、Struts的出現(xiàn)

2001年6月,struts1.0出現(xiàn),struts針對jsp推出了一套struts標(biāo)簽,從而使得jsp中沒有了Java代碼,結(jié)構(gòu)清晰,功能強(qiáng)大。針對servlet,它提供了Action類來代替了servlet,這個(gè)Action類具有servlet的功能,并且能夠進(jìn)行一些請求過濾和自動(dòng)轉(zhuǎn)碼的功能。

4.2、Spring的出現(xiàn)

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

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

4.3 、SpringMVC的出現(xiàn)

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

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

轉(zhuǎn)載于:https://www.cnblogs.com/jiangzhaowei/p/9365056.html

總結(jié)

以上是生活随笔為你收集整理的Javaweb经典三层架构的演变的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。