1. 說說個人對Struts,Spring,Hibernate分別是什麼的理解(其中要包括Struts,Spring,Hibernate的工作機制)
這是三個相互配合的框架組合,也是目前較為成熟的Java Web開發框架組合。
Struts(現在主要用Struts 2了)主要負責Web層的交互,也就是頁面和代碼間傳參、類型轉換、輸入校驗、國際化、文件上傳下載這些直接與用戶進行網頁交互的功能,其核心機制是攔截器,將這些web開發的通用功能給封裝了,便於直接利用。
Hibernate主要負責數據層的處理,也就是代碼與關系資料庫(RDBMS)的交互,是一種對象關系映射(ORM)框架,主要作用是將資料庫中的表及其關系映射為Java的類對象及其關系,便於以面向對象(OO)方式進行操作,避免了JDBC直接採用sql方式編程的繁瑣和非面向對象方式。(當然還是能調用SQL)。其他的功能包括緩存等功能主要是提高代碼運行性能。
Spring框架主要是用它的兩個功能,1)IoC(反轉控制)功能,將代碼中的JavaBean統一管理,實現自動注入,減少代碼耦合。(用好這方面的功能,需要你很好理解設計模式方面的東西)。 2)面向切面(AOP)功能,能將一部分通用代碼切入到程序中,例如日誌記錄,事務管理里用的特別多。Spring其實可以理解為一個」膠水「,利用IoC和AOP,可以與Struts 2和Hibernate進行整合,比如管理Struts2 Action,負責業務層代碼注入,實現資料庫的註解式事務管理等等。
在這三個框架其實每個方面都有替代的方案,比如Struts 2可以改用SpringMVC,Hibernate改用MyBatis,Spring IoC也有Google Guice可替。只不過這三個目前比較成熟,能查到的資料也比較多,所以大多項目喜歡用這個組合。
以上是我個人的理解。
2. 想問一下struts2和hibernate分別負責哪一部分,它們有什麼不同怎樣整合它們
struts2負責的是控制器部分,hibernate 負責的是模型部分;比如,由頁面發出一個請求,由struts2接收,然後struts2會做一些數據控制,如數據是否合法,然後去調用相應的服務層(即是一些介面方法);然後服務層去調用DAO層,這里的DAO層里用的就是hibernate來實現對資料庫的操作,DAO層處理完資料庫的數據後返回結果給服務層,服務層再返回給struts2,struts2再返回到相應的頁面。一個請求流程就是這樣實現的了。
3. Hibernate是什麼
Hibernate是一個開放源代碼的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱資料庫。 Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成數據持久化的重任。
Hibernate的核心介面一共有5個,分別為:Session、SessionFactory、Transaction、Query和Configuration。這5個核心介面在任何開發中都會用到。通過這些介面,不僅可以對持久化對象進行存取,還能夠進行事務控制。下面對這五的核心介面分別加以介紹。
·Session介面:Session介面負責執行被持久化對象的CRUD操作(CRUD的任務是完成與資料庫的交流,包含了很多常見的SQL語句。)。但需要注意的是Session對象是非線程安全的。同時,Hibernate的session不同於JSP應用中的HttpSession。這里當使用session這個術語時,其實指的是Hibernate中的session,而以後會將HttpSesion對象稱為用戶session。
·SessionFactory介面:SessionFactroy介面負責初始化Hibernate。它充當數據存儲源的代理,並負責創建Session對象。這里用到了工廠模式。需要注意的是SessionFactory並不是輕量級的,因為一般情況下,一個項目通常只需要一個SessionFactory就夠,當需要操作多個資料庫時,可以為每個資料庫指定一個SessionFactory。
·Configuration介面:Configuration介面負責配置並啟動Hibernate,創建SessionFactory對象。在Hibernate的啟動的過程中,Configuration類的實例首先定位映射文檔位置、讀取配置,然後創建SessionFactory對象。
·Transaction介面:Transaction介面負責事務相關的操作。它是可選的,可發人員也可以設計編寫自己的底層事務處理代碼。
·Query和Criteria介面:Query和Criteria介面負責執行各種資料庫查詢。它可以使用HQL語言或SQL語句兩種表達方式。
4. 中間件是什麼幹嘛用的
中間件是一種獨立的系統軟體或服務程序,是連接兩個獨立應用程序或獨立系統的軟體,即使它們具有不同的介面,但通過中間件相互之間仍能交換信息。
中間件在操作系統、網路和資料庫之上,應用軟體的下層,總的作用是為處於自己上層的應用軟體提供運行與開發的環境,幫助用戶靈活、高效地開發和集成復雜的應用軟體。
隨著計算機技術的快速發展,更多的應用軟體被要求在許多不同的網路協議、不同的硬體生產廠商以及不一樣的網路平台和環境上運營。這導致了軟體開發者需要需要開發多種應用程序來達到運營的目的。所以,中間件技術的產生,在極大程度上減輕了開發者的負擔,使得網路的運行更有效率。
(4)hibernate資料庫中間件擴展閱讀
中間件技術
1、遠程過程調用
一個應用程序使用RPC來「遠程」執行一個位於不同地址空間里的過程,並且從效果上看和執行本地調用相同。事實上,一個RPC應用分為兩個部分:server和client。server提供一個或多個遠程過程;client向server發出遠程調用。
在RPC模型中,client和server只要具備了相應的RPC介面,並且具有RPC運行支持,就可以完成相應的互操作,而不必限制於特定的server。
2、面向消息的中間件
MOM指的是利用高效可靠的消息傳遞機制進行平台無關的數據交流,並基於數據通信來進行分布式系統的集成。消息放入適當的隊列時,目標程序甚至根本不需要正在運行;即使目標程序在運行,也不意味著要立即處理該消息。
對應用程序的結構沒有約束:在復雜的應用場合中,通訊程序之間不僅可以是一對一的關系,還可以進行一對多和多對一方式,甚至是上述多種方式的組合。多種通訊方式的構造並沒有增加應用程序的復雜性。
3、對象請求代理
可向上提供不同形式的通訊服務,包括同步、排隊、訂閱發布、廣播等等,在這些基本的通訊平台之上,可構築各種框架,為應用程序提供不同領域內的服務,如事務處理監控器、分布數據訪問、對象事務管理器OTM等。
4、事務處理監控
事務處理監控最早出現在大型機上,為其提供支持大規模事務處理的可靠運行環境。隨著分布計算技術的發展,分布應用系統對大規模的事務處理提出了需求,比如商業活動中大量的關鍵事務處理。
5. Javaweb開發,到底什麼能叫做框架,什麼又叫做中間件呢
框架:
1是什麼:框架就是一套規范。既然是規范,你使用這個框架就要遵守這個框架所規定的約束。在Java開發中,框架是用一套規則+一群jar包來表示的。
2為什麼:我們為什麼要使用框架?
(1)原因:就好比蓋房子,有10個人一起合作蓋,此時,框架就好比圖紙。如果沒有蓋房子的圖紙,那麼每個人都有自己的想法,那麼蓋出的房子一定不是房主想要的。而有了圖紙,就可以約束每個人要怎麼蓋我們的房子,砌磚的要切成什麼樣子,方向的門要超南朝北等都被約束了。這樣便於團隊的合作與開發。放在我們的開發中,如果一個類的名字,A同學起名字叫A.java B同學起名教B.java,可是其實這兩個類的功能是一樣的,但是就是因為沒有規范,所以造成了混亂,不利於團隊合作與開發,如果使用了框架,框架就會對類的名字有約束,比如Struts,控制類我們都起名字叫**Action 這樣很容易讓人看明白功能。
(2)意義:框架不僅僅只完成這些簡單的約束,更重要的是,框架為我們封裝好了一些冗餘,且重用率低的代碼。並且使用反射與動態代理機制,將代碼實現了通用性。比如如果你說servlet開發,你需要在servlet獲取表單的參數,每次都要獲取很麻煩,而struts底層就使用反射機制和攔截器機制幫助我們獲取表單的值,我們就不用每次都手寫那些代碼了,簡化了開發,當然你必須遵守一些規定來配置。還有比如hibernate,它提供了一些通用性很強的對資料庫的增刪改差,如果你使用jdbc每次做一些簡單的crud的時候都必須寫sql,但使用hibernate就不需要這么麻煩了,直接save,update就可以了。。。當然,你還是要遵循其一些規范而配置。同理spring也是如此。
3怎麼使用 剛才說了,框架在java中是通過jar體現的。如果使用這個是學習的東西,我也沒法講,但首先你需要把jar導入,才可以使用其「規定」。先寫個helloworld。。。慢慢學習。。。
補充-框架的好處和缺點:框架的好處已經說了很多了,便於團隊開發,提供了一些現成的機制,簡化開發難度,還有些框架可以解耦等,比如spring。缺點就是效率上沒有servlet開發高,但是隨著硬體的提高,這些也不是什麼問題。差異不大,其實如果要求效率的話,servlet+jdbc是最好的,但多方面考慮的話,使用框架更好。
什麼是消息中間件
1 用來提升系統性能:
簡單理解就是應用不用關心處理結果的部分,可以通過消息中間件非同步通知消息。然後其他應用伺服器接收到消息後,慢慢處理。
2 應用解耦和通信:
簡單理解就是多個應用之間進行數據交互。
例:簡訊發送,你不可能一直等到簡訊發送成功了。再去處理邏輯,所以就可以用到消息中間件通知可以發簡訊的系統慢慢去發。
你上面的這些 Mybatis Shiro是屬於java的框架,RabbitMQ,Redis是屬於消息中間件, 而Eureka是注冊中心,相當於java的客戶端,希望對你有所幫助,如果想要對這方面有更深入的了解,歡迎關注私信我,帶你玩轉java
6. java web 開發,hibernate ,使用資料庫是oracle,當我保存一個帶有空格的數據到資料庫中
一般資料庫的亂碼產生主要是因為字元集問題產生,你需要對比JAVA中間件設置的字元集(如GBK),以及你的編碼是否有字元集限制,再一個查看資料庫的字元集設置,三者是否一致,或者資料庫是否是前兩者的超集。
7. 請問JSP、Servlet、EJB、hibernate之間有什麼關系
jsp是一種前台表現技術,和html功能上有些一樣,不過Jsp頁面是動態的,是需要伺服器端進行解析和編譯的,成功執行之後才由http協議傳到瀏覽器,傳回的都是html代碼。
servlet是伺服器端程序,請求到達伺服器是通過servlet解析請求做出相應
servlet和jsp一起學習,這兩個是web 學習的基礎,所有的web 開發框架的最最底層都是這兩個技術
hibernate是一中ORMapping映射框架,利用這個框架可以把操作資料庫中的一條條數據變成操作一個個對象,畢竟java是面向對象的,一切皆對象。
hibernate最好是你在學完了servlet,jsp,jdbc後學習。所有的ormapping框架都是在jdbc的基礎上實現的啊。
ejb是一種特殊的javabean ,最大的特點是可以分布式的應用。ejb技術現在是ejb 3.X吧,不過好像使用不太多,2.X使用也不是很多,因為開發成本高,不到萬不得已一般不會採用這個方案的。
建議先學基礎這個暫不考慮