java基本框架有哪些 JAVA框架是什么



文章插圖
java基本框架有哪些 JAVA框架是什么

文章插圖
一、SSH
1、基本概念
SSH框架是JAVA EE中三種框架所集成,分別是Struts,Spring,Hibernate框架所組成,是當前比較流行的java web開源框架 。
集成SSH框架的系統從職責上分為(Struts2–控制;spring–解耦;hibernate–操作數據庫),以幫助開發人員在短期內搭建結構清晰、可服用好、維護方便的web應用程序 。使用Struts作為系統的整體基礎框架,負責MVC的分離,在Struts框架的模型部分,控制業務跳轉,利用hibernate框架對持久層提供支持,spring做管理,管理Struts和hibernate 。
2、Struts2
(1)基本概念
Struts2是一個基于MVC設計模式的web應用框架,相當于一個servlet,在MVC設計模式中,Struts2作為控制器(controller)來建立模型與視圖的數據交互 。Struts2在Struts1融合webwork 。struts2以webwork為核心,采用攔截器的機制來處理用戶的請求,這樣的設計使得業務邏輯控制器能夠與servletAPI完全脫離 。
(2)Struts2框架的運行結構
打開百度APP看高清圖片
解析:客戶端發送請求(HttpServletRequest)到服務器,服務器接收到請求就先進入web.xml配置文件看看有沒有配置過濾器,發現有有Struts2的過濾器,然后找到struts.xml配置文件,struts.xml配置文件里定義一個action,然后就去找到action類,此類繼承ActionSupport接口,并且實現了execute()方法,返回一個字符串“success”給struts.xml配置文件,struts.xml配置文件的action會默認調用action類的execute()方法,result接收到返回的字符串,result就會調用你指定的jsp頁面將結果呈現,最后響應給客戶端 。
(3)Struts2的優勢
實現了MVC模式,層次結構清晰,使程序員只需要關注業務邏輯的實現 。
豐富的標簽庫,大大提高了開發的效率 。
Struts2提供豐富的攔截器實現 。
通過配置文件,就可以掌握整個系統各個部分之間的關系 。
異常處理機制,只需在配置文件中配置異常的映射,即可對異常做響應的處理 。
Struts2的可擴展性高 。
面向切面編程的思想在Struts2中也有了很好的體現 。
體現了攔截器的使用,攔截器是一個一個的小功能模塊,用戶可以將這些攔截器合并成一個大的攔截器,這個合成的攔截器就像單獨的攔截器一樣,只要將它配置到一個Action中就可以 。
(4)Struts2的缺點:
校驗較繁瑣,多字段出錯返回不同 。
安全性太低
獲取傳參時較麻煩
2、Spring
spring是一個開源開發框架,是一個輕量級控制反轉(IoC)和面向切面(AOP)的容器框架 。
spring主要用來開發java應用,構建J2EE平臺的web應用 。其核心就是提供一種新的機制管理業務對象及其依賴關系 。
(2)spring的流程圖
解析:上面是在Struts結構圖的基礎上加入了spring流程圖,在web.xml配置文件中加入了spring的監聽器,在struts.xml配置文件中添加
“<constant name=”struts.objectFactory” value=http://www.mnbkw.com/jxjc/187818/”spring” />”
是告知Struts2運行時使用spring來管理對象,spring在其中主要做的就是注入實例,所有需要類的實例都由spring管理 。
(3)spring的優點
容器:spring是一個容器,包含并管理對象的生命周期和配置 。可以配置每個bean如何被創建,基于一個可配置原型prototype,你的bean可以創建一個單獨的實例或者每次需要時都生成一個新的實例 。
支持AOP:spring提供對AOP的支持,它允許將一些通用任務,如安全、事物、日志等進行集中式處理,從而提高了程序的復用性 。
輕量級框架:spring是輕量級框架,其基本的版本大約2M 。
控制反轉:spring通過控制反轉實現松耦合 。對象們給他們依賴,而不是對象本身,方便解耦,簡化開發 。
方便程序測試:spring提供了Junit4的支持,可以通過注解方便的測試spring程序 。
降低java EE API的使用難度:spring對java EE開發中非常難用的一些API(比如JDBC),都提供了封裝,使這些API應用難度大大降低 。
方便集成各種優秀框架:spring內部提供了對各種優秀框架(如Struts、mybatis)的直接支持 。
支持聲明式事務處理:只需要通過配置就可以完成對事務的管理,而無須手動編程 。
(4)spring的缺點
依賴反射,反射影響進程 。
太過于依賴設計模式 。
控制器過于靈活 。
不支持分布式應用 。
Spring常用注解(絕對經典)
3、hibernate
Hibernate是一個開放源代碼的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,它將POJO與數據庫表建立映射關系,是一個全自動的orm框架,hibernate可以自動生成SQL語句,自動執行,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數據庫 。Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成數據持久化的重任 。
(2)hibernate的核心構成和執行流程圖
(3)hibernate的優點
對JDBC訪問數據庫的代碼做了封裝,大大簡化了數據訪問層繁瑣的重復性代碼 。
Hibernate是一個優秀的ORM實現 。他很大程度的簡化DAO層的編碼工作,將軟件開發人員從大量相同的數據持久層相關編程工作中解放出來,使開發更對象化了 。
透明持久化(persistent)帶有持久化狀態的、具有業務功能的單線程對象,此對象生存期很短 。這些對象可能是普通的javabeans/POJO,(POJO概念,plain ordinary java object,簡單的java對象,可以簡單理解為簡單的實體類entity 。)這個對象沒有實現第三方框架或接口,唯一特殊的是他們正與session關聯 。一旦這個session被關閉,這些對象就會脫離持久化狀態,這樣就可被應用程序的任何層自由使用 。
事務transaction應用程序用來指定原子操作單元范圍的對象,它是單線程的,生命周期很短 。它通過抽象將應用從底層具體的JDBC、JTA(java transaction API,JTA允許應用程序執行分布式事務處理,在兩個或多個網絡計算機資源訪問并且更新數據,JDBC驅動程序的JTA支持極大地增強了數據訪問能力)以及CORBA(公用對象請求代理程序體系結構,common object request broker architecture,簡而言之,CORB允許應用程序和其它的應用程序通訊)事務隔離開 。某些情況下,一個session之內可能包含多個transaction對象,事務邊界的開啟與關閉時必不可少的 。
它沒有侵入性,是輕量級框架 。
移植性好,支持各種數據庫,如果換個數據庫只要在配置文件中變換配置就可以了,不用改變hibernate代碼 。
緩存機制,提供一級緩存和二級緩存 。
一級緩存:是session級別的緩存,一個session做了一個查詢操作,它會把這個操作的結果放到一級緩存中,如果短時間內這個session又做了同一個操作,那么hibernate直接從一級緩存中拿出,而不會去連數據庫取數據 。
二級緩存:是sessionFactory級別的緩存,就是查詢的時候會把結果緩存到二級緩存中,如果同一個sessionFactory創建的某個session執行了相同的操作,hibernate就會從二級緩存中拿出結果,而不會再去連接數據庫 。
(4)hibernate的缺點
持久層封裝過于完整,導致開發人員無法對SQL進行優化,無法靈活應用原生SQL 。
批量數據處理的時候較為弱勢 。
框架中使用ORM原則,導致配置過于復雜,遇到大項目,維護問題不斷 。
Hibernate實現CRUD(附項目源碼)
二、SSM
SSM架構,是三層結合所成的框架,分別是Spring、SpringMVC、MyBatis所組成 。Spring依賴注入來管理各層,面向切面編程管理事務,日志和權限 。SpringMVC代表了model、view、controller接收外部請求,進行開發和處理 。mybatis是基于jdbc的框架,主要用來操作數據庫,并且將業務實體和數據表聯系起來 。
1、spring
詳細介紹見SSH中spring 。
2、SpringMVC
屬于spring框架的一部分,用來簡化MVC架構的web應用程序開發 。
(2)SpringMVC的優點
擁有強大的靈活性,非侵入性和可配置性
提供了一個前端控制器dispatcherServlet,開發者無需額外開發控制器對象
分工明確,包括控制器、驗證器、命令對象、模型對象、處理程序映射視圖解析器,每一個功能實現由一個專門的對象負責完成
可以自動綁定用戶輸入,并正確的轉換數據類型
可重用的業務代碼:可以使用現有的業務對象作為命令或表單對象,而不需要去擴展某個特定框架的基類 。
(3)SpringMVC的缺點
servlet API耦合難以脫離容器獨立運行
太過于細分,開發效率低
SpringMVC中put和post如何選擇
GET和POST的區別
@RequestParam、@ModelAttribute、@RequestBody的區別
HttpServletResponse response實現文件上傳、下載
3、mybatis
mybatis是一個簡化和實現了java數據持久層的開源框架,它抽象了大量的JDBC冗余代碼,并提供了一個簡單易用的API和數據庫交互 。
(2)mybatis的優點
與JDBC相比,減少了50%以上的代碼量 。
mybatis是最簡單的持久化框架,小巧并且簡單易學 。
mybatis靈活,不會對應用程序或者數據庫的限售設計強加任何影響,SQL寫在XML里,從程序代碼中徹底分離,降低耦合度,便于統一管理和優化,可重用 。
提供XML標簽,支持編寫動態SQL語句(XML中使用if,else) 。
提供映射標簽,支持對象與數據庫的ORM字段關系映射(在XML中配置映射關系,也可以使用注解)
(3)mybatis的缺點
SQL語句的編寫工作量較大,對開發人員的SQL語句編寫有一定的水平要求 。
SQL語句過于依賴數據庫,不能隨意更換數據庫 。
拼接復雜SQL語句時不靈活 。
三、Springboot
1、springboot基本概念
springboot是一個全新的框架,簡化Spring的初始搭建和開發過程,使用了特定的方式來進行配置,讓開發人員不再需要定義樣板化的配置 。此框架不需要配置xml,依賴于maven這樣的構建系統 。
2、Springboot的優點
(1)減少了大量的開發時間并提高了生產力
(2)避免了編寫大量的樣板代碼,注釋和XML配置
(3)解決了spring的弊端
(4)代碼少了、配置文件少了、不需要對第三方框架煩惱了、項目精簡了,對整個團隊的開發和維護來說,更大的節約了成本 。
3、springboot的缺點
(1)修復bug較慢,報錯時難以定位 。
(2)集成度較高,不易于了解底層 。
4、springboot總結
簡單、快速、方便的搭建項目;對主流開發框架的無配置集成;極大提高了開發、部署效率 。
5、springboot和spring的區別
(1)springboot可以建立獨立的spring應用程序 。
(2)內嵌了如tomcat,Jetty和Undertow這樣的容器,也就是說可以直接跑起來,用不著再做部署工作 。
(3)無需再像spring那樣寫一堆繁瑣的XML配置文件
(4)可以自動配置spring
(5)提供的POM可以簡化maven的配置
6、springboot和springMVC的區別
(1)SpringMVC是基于spring的一個MVC框架 。
【java基本框架有哪些 JAVA框架是什么】(2)springboot的基于spring的條件注冊的一套快速開發整合包 。