1. 程式人生 > >springmvc和mybatis面試題(含答案)

springmvc和mybatis面試題(含答案)

理解 頁面 發送請求 緩存 固定 sql tor 組件 poj

轉載:http://blog.csdn.net/xinghuo0007/article/details/53463897

Spring MVC Framework有這樣一些特點:

1。它是基於組件技術的.全部的應用對象,無論控制器和視圖,還是業務對象之類的都是java組件.並且和Spring提供的其他基礎結構緊密集成.
2。不依賴於Servlet API(目標雖是如此,但是在實現的時候確實是依賴於Servlet的)
3。可以任意使用各種視圖技術,而不僅僅局限於JSP
4。支持各種請求資源的映射策略
5。它應是易於擴展的

2) SpringMVC的工作流程?

1. 用戶發送請求至前端控制器DispatcherServlet
2. DispatcherServlet收到請求調用HandlerMapping處理器映射器。
3. 處理器映射器根據請求url找到具體的處理器,生成處理器對象及處理器攔截器(如果有則生成)一並返回給DispatcherServlet。
4. DispatcherServlet通過HandlerAdapter處理器適配器調用處理器
5. 執行處理器(Controller,也叫後端控制器)。
6. Controller執行完成返回ModelAndView
7. HandlerAdapter將controller執行結果ModelAndView返回給DispatcherServlet
8. DispatcherServlet將ModelAndView傳給ViewReslover視圖解析器
9. ViewReslover解析後返回具體View
10. DispatcherServlet對View進行渲染視圖(即將模型數據填充至視圖中)。
11. DispatcherServlet響應用戶

3) 如果你也用過struts2.簡單介紹下springMVC和struts2的區別有哪些?

1. springmvc的入口是一個servlet即前端控制器,而struts2入口是一個filter過慮器。
2. springmvc是基於方法開發(一個url對應一個方法),請求參數傳遞到方法的形參,可以設計為單例或多例(建議單例),struts2是基於類開發,傳遞參數是通過類的屬性,只能設計為多例。
3. Struts采用值棧存儲請求和響應的數據,通過OGNL存取數據, springmvc通過參數解析器是將request請求內容解析,並給方法形參賦值,將數據和視圖封裝成ModelAndView對象,最後又將ModelAndView中的模型數據通過reques域傳輸到頁面。Jsp視圖解析器默認使用jstl。

4) SpringMvc原理圖
技術分享

5) SSM優缺點、使用場景?

1. Mybatis和hibernate不同,它不完全是一個ORM框架,因為MyBatis需要程序員自己編寫Sql語句,不過mybatis可以通過XML或註解方式靈活配置要運行的sql語句,並將java對象和sql語句映射生成最終執行的sql,最後將sql執行的結果再映射生成java對象。

2. Mybatis學習門檻低,簡單易學,程序員直接編寫原生態sql,可嚴格控制sql執行性能,靈活度高,非常適合對關系數據模型要求不高的軟件開發,例如互聯網軟件、企業運營類軟件等,因為這類軟件需求變化頻繁,一但需求變化要求成果輸出迅速。但是靈活的前提是mybatis無法做到數據庫無關性,如果需要實現支持多種數據庫的軟件則需要自定義多套sql映射文件,工作量大。

3. Hibernate對象/關系映射能力強,數據庫無關性好,對於關系模型要求高的軟件(例如需求固定的定制化軟件)如果用hibernate開發可以節省很多代碼,提高效率。但是Hibernate的學習門檻高,要精通門檻更高,而且怎麽設計O/R映射,在性能和對象模型之間如何權衡,以及怎樣用好Hibernate需要具有很強的經驗和能力才行。
4. 總之,按照用戶的需求在有限的資源環境下只要能做出維護性、擴展性良好的軟件架構都是好架構,所以框架只有適合才是最好。

Mybatis
1) 簡單介紹下你對mybatis的理解?

1. mybatis配置
2. SqlMapConfig.xml,此文件作為mybatis的全局配置文件,配置了mybatis的運行環境等信息。
3. mapper.xml文件即sql映射文件,文件中配置了操作數據庫的sql語句。此文件需要在SqlMapConfig.xml中加載。
4. 通過mybatis環境等配置信息構造SqlSessionFactory即會話工廠
5. 由會話工廠創建sqlSession即會話,操作數據庫需要通過sqlSession進行。
6. mybatis底層自定義了Executor執行器接口操作數據庫,Executor接口有兩個實現,一個是基本執行器、一個是緩存執行器。
7. Mapped Statement也是mybatis一個底層封裝對象,它包裝了mybatis配置信息及sql映射信息等。mapper.xml文件中一個sql對應一個Mapped Statement對象,sql的id即是Mapped statement的id。
8. Mapped Statement對sql執行輸入參數進行定義,包括HashMap、基本類型、pojo,Executor通過Mapped Statement在執行sql前將輸入的java對象映射至sql中,輸入參數映射就是jdbc編程中對preparedStatement設置參數。
9. Mapped Statement對sql執行輸出結果進行定義,包括HashMap、基本類型、pojo,Executor通過Mapped Statement在執行sql後將輸出結果映射至java

springmvc和mybatis面試題(含答案)