日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ssm面试题总结

發布時間:2023/12/10 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ssm面试题总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

一、springMVC工作流程

二、SpringMVC和Struts2的區別

三、SpringMVC是不是單例模式

四、如何指定攔截的是GET請求還是POST請求

五、mybatis和hibernate的區別

1、區別總覽

2、緩存機制

六、Ajax


spring的比較多,單獨拿出來寫了一篇了spring框架面試題總結_巴啦啦小刺猬的博客-CSDN博客

一、springMVC工作流程

  • 用戶發送請求到前端控制器DispatcherServlet
  • 前端控制器調用處理器映射器HandlerMapper
  • 處理器映射器生成處理器對象,返回給前端控制器
  • 前端控制器調用處理器適配器HandlerAdapter
  • 處理器適配器經過適配調用具體的控制器Controller執行
  • Controller處理完成后,生成ModelAndView返回
  • 前端控制器收到ModelAndView后傳給視圖解析器ViewResolver
  • 視圖解析器解析后返回View
  • 前端控制器再根據model渲染view(模型數據填充到視圖中)
  • 前端控制器響應客戶

二、SpringMVC和Struts2的區別

SpringMVC的核心控制器(也叫前端控制器是Servlet),而Struts2是filter

SpringMVC是基于方法設計,一個類(其實是一個單例對象)可以處理多個請求,Struts2是基于對象,每次請求都會產生一個action

三、SpringMVC是不是單例模式

是,所以在多線程訪問的時候,會有線程安全問題,但是最好不要加同步,會影響性能,解決方案就是,在Controller層中不要有變量

四、如何指定攔截的是GET請求還是POST請求

在requestMapping中指定method = requestMethod.GET

post同理

五、mybatis和hibernate的區別

1、區別總覽

1)sql 優化方面

  • Hibernate 不需要編寫大量的 SQL,就可以完全映射,提供了日志、緩存、級聯(級聯比 MyBatis 強大)等特性,此外還提供 HQL(Hibernate Query Language)對 POJO 進行操作。但會多消耗性能。
  • MyBatis 手動編寫 SQL,支持動態 SQL、處理列表、動態生成表名、支持存儲過程。工作量相對大些。

2)開發方面

  • MyBatis 是一個半自動映射的框架,因為 MyBatis 需要手動匹配 POJO、SQL 和映射關系。
  • Hibernate 是一個全表映射的框架,只需提供 POJO 和映射關系即可。

3)Hibernate 優勢

  • Hibernate 的 DAO 層開發比 MyBatis 簡單,Mybatis?需要維護 SQL 和結果映射。
  • Hibernate 對對象的維護和緩存要比 MyBatis 好,對增刪改查的對象的維護要方便。
  • Hibernate 數據庫移植性很好,MyBatis 的數據庫移植性不好,不同的數據庫需要寫不同 SQL。
  • Hibernate 有更好的二級緩存機制,可以使用第三方緩存。MyBatis 本身提供的緩存機制不佳。

4)Mybatis優勢

  • MyBatis 可以進行更為細致的 SQL 優化,可以減少查詢字段。
  • MyBatis 容易掌握,而 Hibernate 門檻較高。

總的來說,MyBatis 是一個小巧、方便、高效、簡單、直接、半自動化的持久層框架,Hibernate 是一個強大、方便、高效、復雜、間接、全自動化的持久層框架。
所以對于性能要求不太苛刻的系統,比如管理系統、ERP 等推薦使用 Hibernate,而對于性能要求高、響應快、靈活的系統則推薦使用 MyBatis。

2、緩存機制

訪問數據順序是:一級緩存——》二級緩存——》數據庫

(1)hibernate(默認一級緩存)

hibernate是持久層框架,經常訪問物理數據庫。為了較少對數據庫的訪問,提高數據庫訪問性能,加入了hibernate緩存機制

  • 一級緩存 : 自帶的不可卸載的.一級緩存的生命周期與session一致.一級緩存稱為session級別的緩存.
  • 二級緩存 : 默認沒有開啟,需要手動配置才可以使用的.二級緩存可以在多個session中共享數據,二級緩存稱為是sessionFactory級別的緩存.

SessionFactory的緩存分為內置緩存和外置緩存。內置緩存中存放的是SessionFactory對象的一些集合屬性包含的數據(映射元素據及預定SQL語句等),對于應用程序來說,它是只讀的。外置緩存中存放的是數據庫數據的副本,其作用和一級緩存類似.二級緩存除了以內存作為存儲介質外,還可以選用硬盤等外部存儲設備。二級緩存稱為進程級緩存或SessionFactory級緩存,它可以被所有session共享,它的生命周期伴隨著SessionFactory的生命周期存在和消亡。

(2)mybatis(默認一級緩存)

一級緩存為 ?SqlSession? 緩存,緩存的數據只在 SqlSession 內有效。在操作數據庫的時候需要先創建 SqlSession 會話對象,在對象中有一個 HashMap 用于存儲緩存數據,此 HashMap 是當前會話對象私有的,別的 SqlSession 會話對象無法訪問

二級緩存是??mapper? 級別的緩存,也就是同一個 namespace 的 mapper.xml ,當多個 SqlSession 使用同一個 Mapper 操作數據庫的時候,得到的數據會緩存在同一個二級緩存區域

二級緩存默認是沒有開啟的。需要在 setting 全局參數中配置開啟二級緩存

(3)關于sql

MyBatis :可以自由書寫SQL、支持動態SQL、處理列表、動態生成表名,支持存儲過程

Hibernate:hql能自動生成sql,數據庫移植性很好,MyBatis的數據庫移植性不好,不同的數據庫需要寫不同SQL

(4)延遲加載

Hibernate對實體關聯對象的抓取有著良好的機制。對于每一個關聯關系都可以詳細地設置是否延遲加載,并且提供關聯抓取、查詢抓取、子查詢抓取、批量抓取四種模式。 它是詳細配置和處理的。

而Mybatis的延遲加載是全局配置的。

六、Ajax

1、介紹

通過在后臺與服務器進行少量數據交換,來使網頁異步更新

通過異步模式,提升了用戶體驗

2、請求的步驟

  • 創建XMLHttpRequest 對象(Ajax的核心就是XMLHttprequest),即創建一個異步調用對象。
  • 創建一個新的HTTP 請求,并指定該HTTP 請求的方法(GET、POST或者delete、put),URL及驗證信息
  • 設置響應HTTP請求狀態變化的函數
  • 發送HTTP 請求
  • 獲取異步調用返回的數據
  • 使用JavaScript和DOM 實現局部刷新

總結

以上是生活随笔為你收集整理的ssm面试题总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。