Spring MVC 框架html
Springmvc就是spring框架的一個模塊,它是一個基於mvc設計思想的前端web層框架,主要做用就是對前端請求進行處理。前端
完整答案java
Springmvc就是spring框架的一個模塊,因此它能夠和spring框架能夠進行無縫整合,它是一個基於mvc設計思想的前端web框架,主要做用就是對前端請求進行處理。他的前端控制器是一個servlet.它的請求攔截是基於方法級別的.他的執行流程是
Spring的MVC框架主要由DispatcherServlet、處理器映射、處理器(控制器)、視圖解析器、視圖組成
1. 客戶端請求提交到DispatcherServlet
2. 由DispatcherServlet控制器查詢一個或多個HandlerMapping,找處處理請求的Controller
3. DispatcherServlet將請求提交到Controller
4. Controller調用業務邏輯處理後,返回ModelAndView
5. DispatcherServlet查詢一個或多個ViewResoler視圖解析器,找到ModelAndView指定的視圖
6. 視圖負責將結果顯示到客戶端
備註: web
mvc指的就是Model(業務模型)、View(視圖)、Controller(控制器)spring
struts2框架sql
Struts2,它是一個基於mvc設計思想的前端web層框架,主要做用就是對前端請求進行處理。他的核心是攔截器.可是他的前端控制器是一個過濾器
完整答案數據庫
Struts2,它是一個基於mvc設計思想的前端web層框架,主要做用就是對前端請求進行處理。他的核心是攔截器.可是他的前端控制器是一個過濾器. 它的請求攔截是基於類級別,OGNL也提供了在Struts2裏訪問各類做用域中的數據的簡單方式.大大簡化了獲取數據的代碼.編程
struts2的執行流程是:
A. 頁面請求傳遞到後臺, 首先進入Struts2 的核心過濾器 StrutsPrepareAndExecutedFilter .
B. 請求進入到struts2 以後, 會根據請求的路徑到 struts.xml 文件中根據 package的 namespace 屬性 與 action 的 name 屬性配置到請求處理的Action 類.
C. 匹配到對應 Action 類的對應方法 , 執行該方法進行業務處理, 處理完畢以後會返回一個結果視圖(字符串).
D. 而後根據返回的結果視圖 , 到struts.xml 中對應的Action的result結果集配置中 匹配 對應的視圖頁面(或action).
E. 而後根據 result 的type屬性, 轉發(或重定向) 對應的頁面(或action).
SpringMVC和Struts2兩個框架對比一下.緩存
注意:兩個技術已經不少年了,技術很是成熟.用戶羣體很大.不能片面的用好與很差來講.只能說適合不適合.由於每一個東西都有擅長和不擅長session
注意:說出幾點便可
一、springmvc入口是一個servlet前端控制器,struts2入口是一個filter過慮器。
二、struts2經過在action類中定義成員變量接收請求參數,struts2只能使用多例模式管理action。
springmvc經過在controller方法中定義形參接收請求參數,springmvc可使用單例模式管理controller。
三、springmvc是基於方法開發的,註解開發中使用requestMapping將url和方法進行映射,若是根據url找到controller類的方法生成一個Handler處理器對象(只包括一個method)。
struts2是基於類開發,每一個請求過來建立一個action實例,實例對象中有若干的方法。
開發中建議使用springmvc,springmvc方法更相似service業務方法。
四、Struts採用值棧存儲請求和響應的數據,經過OGNL存取數據, springmvc經過參數綁定器是將request請求內容解析,並給方法形參賦值。
說說你對spring框架的理解?他的做用是什麼?
Spring的核心有不少.其中比較主要也是咱們經常使用的就是AOP,IOC,DI.也就是面向切面編程,控制反轉,依賴注入.Spring通常是做爲容器管理其餘框架.例如常見的web層框架(struts2,springMVC)和持久成框架(mybatis,hibernate).通常都由spring來管理
完整答案
(1)AOP:面向切面編程,將跟業務邏輯沒有關係的代碼提取出來,在調用目標方法以前或者以後執行。經常使用的場景,事務,日誌,權限控制,異常處理等方面。
(2)IOC:建立對象的權利,交給spring容器建立。
(3)DI:若是一個對象A須要使用另外一個對象B才能實現某個功能,這時就能夠說A對象依賴於B對象,而Spring容器在建立A對象時,會自動將A對象須要的B對象注入到A對象中,此過程就是依賴注入。
核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要組件是 BeanFactory,它是工廠模式的實現。BeanFactory 使用控制反轉 (IOC) 模式將應用程序的配置和依賴性規範與實際的應用程序代碼分開。
Spring 上下文:Spring 上下文是一個配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企業服務,例如 JNDI、EJB、電子郵件、國際化、校驗和調度功能。
Spring AOP:經過配置管理特性,Spring AOP 模塊直接將面向方面的編程功能集成到了 Spring 框架中。因此,能夠很容易地使 Spring 框架管理的任何對象支持 AOP。Spring AOP 模塊爲基於 Spring 的應用程序中的對象提供了事務管理服務。經過使用 Spring AOP,不用依賴 EJB 組件,就能夠將聲明性事務管理集成到應用程序中。
Spring DAO:JDBC DAO 抽象層提供了有意義的異常層次結構,可用該結構來管理異常處理和不一樣數據庫供應商拋出的錯誤消息。異常層次結構簡化了錯誤處理,而且極大地下降了須要編寫的異常代碼數量(例如打開和關閉鏈接)。Spring DAO 的面向 JDBC 的異常聽從通用的 DAO 異常層次結構。
Spring ORM:Spring 框架插入了若干個 ORM 框架,從而提供了 ORM 的對象關係工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。全部這些都聽從 Spring 的通用事務和 DAO 異常層次結構。
Spring Web 模塊:Web 上下文模塊創建在應用程序上下文模塊之上,爲基於 Web 的應用程序提供了上下文。因此,Spring 框架支持與 Jakarta Struts 的集成。Web 模塊還簡化了處理多部分請求以及將請求參數綁定到域對象的工做。
Spring MVC 框架:MVC 框架是一個全功能的構建 Web 應用程序的 MVC 實現。經過策略接口,MVC 框架變成爲高度可配置的,MVC 容納了大量視圖技術,其中包括 JSP、Velocity、Tiles、iText 和 POI。
mybatis框架
Mybatis是一個優秀的ORM框架.應用在持久層. 它對jdbc的 操做數據庫過程 進行封裝,使開發者只須要關注 SQL 自己,而不須要花費精力去處理例如註冊驅動、建立connection、等jdbc繁雜的過程代碼.通常使用mapper代理的方式開發.直接在xml裏面寫sql(若是對hibernate瞭解.能夠話題轉向mybatis和hibernate的對比)
完整答案
Mybatis的工做流程
一、 mybatis配置
SqlMapConfig.xml,此文件做爲mybatis的全局配置文件,配置了mybatis的運行環境等信息。
mapper.xml文件即sql映射文件,文件中配置了操做數據庫的sql語句。此文件須要在SqlMapConfig.xml中加載。
二、 經過mybatis環境等配置信息構造SqlSessionFactory即會話工廠
三、 由會話工廠建立sqlSession即會話,操做數據庫須要經過sqlSession(DefaultSqlSession)進行。
四、 mybatis底層自定義了Executor(BaseExecutor)執行器接口操做數據庫,Executor接口有兩個實現,一個是基本執行器、一個是緩存執行器。
五、 Mapped Statement也是mybatis一個底層封裝對象,它包裝了mybatis配置信息及sql映射信息等。mapper.xml文件中一個sql對應一個Mapped Statement對象,sql的id便是Mapped statement的id。
六、 Mapped Statement對sql執行輸入參數進行定義,包括HashMap、基本類型、pojo,Executor經過 Mapped Statement在執行sql前將輸入的java對象映射至sql中,輸入參數映射就是jdbc編程中對preparedStatement設置參數。
七、 Mapped Statement對sql執行輸出結果進行定義,包括HashMap、基本類型、pojo,Executor經過 Mapped Statement在執行sql後將輸出結果映射至java對象中,輸出結果映射過程至關於jdbc編程中對結果的解析處理過程。
hibernate框架
簡要口述(若是感受說的少能夠在完整答案裏面挑幾條說)
Hibernate是輕量級的持久層解決方案,是一個關係數據庫ORM框架, 對JDBC訪問數據庫的代碼作了封裝.咱們能夠很容易的對數據庫進行增刪改查操做.
完整答案
hibernate查詢方式
(1)導航對象圖檢索方式。根據已經加載的對象,導航到其餘對象。
(2)OID檢索方式。使用get或者load加載對應的對象
(3)HQL檢索方式。
(4)QBC檢索方式。
(5)SQL檢索方式。
sql與hql的區別
(1)sql是直接操做數據庫的
(2)hql是經過操做對象操做數據庫,對大小寫敏感。
一級緩存和二級緩存的區別
(1)一級緩存是session級別的緩存,二級緩存是sessionFactory級別的緩存。
hibernate中get和load的區別?
get和load都是根據id獲取數據。
(1)get先查詢session中對應id是否有數據,若是有則直接返回,有查詢數據庫,如數據庫中沒有則返回爲null;
(2)load方式查詢session中對應id是否有數據,若是沒有生成代理對象,查詢數據庫。如沒有對應的id則拋出異常
Hibernate和mybatis對比
簡要口述(若是感受說的少能夠在完整答案裏面挑幾條說)
注意:兩個技術已經不少年了,技術很是成熟.用戶羣體很大.不能片面的用好與很差來講.只能說適合不適合.由於每一個東西都有擅長和不擅長
1. 在移植性方面hibernate配置一下方言便可.而通常狀況下mybatis則須要修改sql語句
2. hibernate是一個徹底的ORM框架.徹底的面向對象.更符合咱們開發者的思惟模式.mybatis須要咱們手動寫sql語句
3. hibernate的優化成本比較高.由於hibernate的sql語句是自動生成的,因此在優化方面通常的新手無從下手.而mybatis只要修改sql就能夠了.更加容易上手
(若是對某一個框架很是瞭解.這裏話鋒能夠轉向具體的詳細介紹某一個框架)
來源:連接