更新時間:2022-12-21 15:50:53 來源:動力節點 瀏覽2065次
最近小編看到不少同學都在找ssm的相關面試題,所以精心整理了這套常問到的問題出來,希望可以幫助到大家。
1、什么是有狀態登錄和無狀態登錄?
有狀態登錄:當客戶端第一次請求服務器時(請求登錄),服務器創建 Session ,然后將登錄用戶身份信息保存到 Session 中,并將用戶身份信息作為 “門卡”,響應回客戶端,客戶端將服務器響應的 “門卡” 信息保存在本地 Cookie 中。
當下一次客戶端再次請求服務器時,這時候就直接將客戶端的 Cookie 中存放的 “門卡” 帶到服務器端,服務器端從 Session 中拿出數據和 “門卡” 進行對比,判斷是否可以同行。
無狀態登錄的缺點:服務端保存大量用戶身份標識,增加服務端壓力。
客戶端請求依賴服務端,多次請求必須訪問同一臺服務器(如果是集群,相當于啟動了多個 Tomcat,這時候無法在多個 Tomcat 直接共享 Session 數據)。
無狀態登錄:服務器不保存任何客戶端用戶的登錄信息!
客戶端的每次請求服務器必須自己具備身份信息標識(jwt),服務器端通過身份信息標識識別客戶端身份。
無狀態登錄的好處:客戶端請求不依賴服務端的信息,任何多次請求不需要必須訪問到同一臺服務器。
減小服務端存儲壓力。
如何實現無狀態登錄?
如圖所示:
當客戶端第一次請求服務時,服務端對用戶進行信息認證(登錄)。認證通過,將用戶身份信息(不包含密碼)進行加密形成 token,返回給客戶端,作為登錄憑證。以后每次請求,客戶端都攜帶認證的 token。服務的對 token 進行解密,判斷是否有效。2、過濾器,攔截器,Aop區別?
過濾器和攔截器均體現了AOP的編程思想,都可以實現諸如日志記錄、登錄鑒權等功能,但二者的不同點也是比較多的。
1、實現原理不同
過濾器和攔截器 底層實現方式大不相同,過濾器是基于函數回調的,攔截器則是基于Java的反射機制(動態代理)實現的。
2、使用范圍不同
我們看到過濾器實現的是 javax.servlet.Filter 接口,而這個接口是在Servlet規范中定義的,也就是說過濾器Filter 的使用要依賴于Tomcat等容器,導致它只能在web程序中使用。
而攔截器(Interceptor) 它是一個Spring組件,并由Spring容器管理,并不依賴Tomcat等容器,是可以單獨使用的。不僅能應用在web程序中,也可以用于Application、Swing等程序中。
3、觸發時機不同
過濾器Filter是在請求進入容器后,但在進入servlet之前進行預處理,請求結束是在servlet處理完以后。
攔截器 Interceptor 是在請求進入servlet后,在進入Controller之前進行預處理的,Controller 中渲染了對應的視圖之后請求結束。
4、攔截的請求范圍不同
5、注入Bean情況不同
在實際的業務場景中,應用到過濾器或攔截器,為處理業務邏輯難免會引入一些service服務。
6、控制執行順序不同
實際開發過程中,會出現多個過濾器或攔截器同時存在的情況,不過,有時我們希望某個過濾器或攔截器能優先執行,就涉及到它們的執行順序。
3、什么是SpringMvc,說一說它的幾個核心組成?
① 前端控制器(DispatcherServlet):主要用于接收客戶端發送的 HTTP 請求、響應結果給客戶端。
② 處理器映射器(HandlerMapping):根據請求的 URL 來定位到對應的處理器(Handler)。
③ 處理器適配器(HandlerAdapter):在編寫處理器(Handler)的時候要按照處理器適配器(HandlerAdapter) 要求的規則去編寫,通過適配器可以正確地去執行 Handler。
④ 處理器(Handler):就是我們經常寫的 Controller 層代碼,例如:UserController。
⑤ 視圖解析器(ViewResolver):進行視圖的解析,將 ModelAndView 對象解析成真正的視圖(View)對象返回給前端控制器。
⑥ 視圖(View):View 是一個接口, 它的實現類支持不同的視圖類型(JSP,FreeMarker,Thymleaf 等)。
4、Springmvc執行流程?
① 首先,用戶發送 HTTP 請求給 SpringMVC 前端控制器 DispatcherServlet。
② DispatcherServlet 收到請求后,調用HandlerMapping 處理器映射器,根據請求 URL 去定位到具體的處理器 Handler,并將該處理器對象返回給 DispatcherServlet 。
③ 接下來,DispatcherServlet 調用 HandlerAdapter 處理器適配器,通過處理器適配器調用對應的 Handler 處理器處理請求,并向前端控制器返回一個 ModelAndView 對象。
④ 然后,DispatcherServlet 將 ModelAndView 對象交給 ViewResoler 視圖解析器去處理,并返回指定的視圖 View 給前端控制器。
⑤ DispatcherServlet 對 View 進行渲染(即將模型數據填充至視圖中)。View 是一個接口, 它的實現類支持不同的視圖類型(JSP,FreeMarker,Thymleaf 等)。
⑥ DispatcherServlet 將頁面響應給用戶。
以上就是“大廠常見ssm面試題大全帶答案”,你能回答上來嗎?如果想要了解更多的Java面試題相關內容,可以關注動力節點Java官網。
以上就是“大廠常見ssm面試題大全帶答案”,你能回答上來嗎?如果想要了解更多的Java面試題相關內容,可以關注動力節點Java官網。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習