企業面試問題-ssm框架
阿新 • • 發佈:2018-11-03
springMVC
- 簡單介紹下你對springMVC的理解?
Spring MVC Framework有這樣一些特點:
l 它是基於元件技術的.全部的應用物件,無論控制器和檢視,還是業務物件之類的都是java元件.並且和Spring提供的其他基礎結構緊密整合.
2 不依賴於Servlet API(目標雖是如此,但是在實現的時候確實是依賴於Servlet的)
3 可以任意使用各種檢視技術,而不僅僅侷限於JSP
4 支援各種請求資源的對映策略
5 它應是易於擴充套件的
- SpringMVC的工作流程?
- 使用者傳送請求至前端控制器DispatcherServlet
- DispatcherServlet
- 處理器對映器根據請求url找到具體的處理器,生成處理器物件及處理器攔截器(如果有則生成)一併返回給DispatcherServlet。
- DispatcherServlet通過HandlerAdapter處理器介面卡呼叫處理器
- 執行處理器(Controller,也叫後端控制器)。
- Controller執行完成返回ModelAndView
- HandlerAdapter將controller執行結果ModelAndView返回給DispatcherServlet
- DispatcherServlet將ModelAndView傳給ViewReslover檢視解析器
- ViewReslover解析後返回具體View
- DispatcherServlet對View進行渲染檢視(即將模型資料填充至檢視中)。
- DispatcherServlet響應使用者
- 如果你也用過struts2.簡單介紹下springMVC和struts2的區別有哪些?
- springmvc的入口是一個servlet即前端控制器,而struts2入口是一個filter過慮器。
- springmvc是基於方法開發(一個url對應一個方法),請求引數傳遞到方法的形參,可以設計為單例或多例(建議單例),struts2是基於類開發,傳遞引數是通過類的屬性,只能設計為多例。
- Struts採用值棧儲存請求和響應的資料,通過OGNL存取資料, springmvc通過引數解析器是將request請求內容解析,並給方法形參賦值,將資料和檢視封裝成ModelAndView物件,最後又將ModelAndView中的模型資料通過reques域傳輸到頁面。Jsp檢視解析器預設使用jstl。
- SpringMvc原理?
- SSM優缺點、使用場景?
- Mybatis和hibernate不同,它不完全是一個ORM框架,因為MyBatis需要程式設計師自己編寫Sql語句,不過mybatis可以通過XML或註解方式靈活配置要執行的sql語句,並將java物件和sql語句對映生成最終執行的sql,最後將sql執行的結果再對映生成java物件。
- Mybatis學習門檻低,簡單易學,程式設計師直接編寫原生態sql,可嚴格控制sql執行效能,靈活度高,非常適合對關係資料模型要求不高的軟體開發,例如網際網路軟體、企業運營類軟體等,因為這類軟體需求變化頻繁,一但需求變化要求成果輸出迅速。但是靈活的前提是mybatis無法做到資料庫無關性,如果需要實現支援多種資料庫的軟體則需要自定義多套sql對映檔案,工作量大。
- Hibernate物件/關係對映能力強,資料庫無關性好,對於關係模型要求高的軟體(例如需求固定的定製化軟體)如果用hibernate開發可以節省很多程式碼,提高效率。但是Hibernate的學習門檻高,要精通門檻更高,而且怎麼設計O/R對映,在效能和物件模型之間如何權衡,以及怎樣用好Hibernate需要具有很強的經驗和能力才行。
- 總之,按照使用者的需求在有限的資源環境下只要能做出維護性、擴充套件性良好的軟體架構都是好架構,所以框架只有適合才是最好。
mybatis
- 簡單介紹下你對mybatis的理解?
- mybatis配置
- SqlMapConfig.xml,此檔案作為mybatis的全域性配置檔案,配置了mybatis的執行環境等資訊。
- mapper.xml檔案即sql對映檔案,檔案中配置了操作資料庫的sql語句。此檔案需要在SqlMapConfig.xml中載入。
- 通過mybatis環境等配置資訊構造SqlSessionFactory即會話工廠
- 由會話工廠建立sqlSession即會話,操作資料庫需要通過sqlSession進行。
- mybatis底層自定義了Executor執行器介面操作資料庫,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程式設計中對結果的解析處理過程。