【金三銀四】Spring MVC面試題(2021最新版)(2021最新版)
前言
這篇文章主要分享了 29個(gè) Spring 經(jīng)典面試題【附答案解析】,現(xiàn)在分享給大家,也給大家做個(gè)參考。正好現(xiàn)在金三銀四,希望對(duì)大家有所幫助,有用的話點(diǎn)贊支持!
1、什么是Spring MVC?簡單介紹下你對(duì)Spring MVC的理解?
Spring MVC是一個(gè)基于Java的實(shí)現(xiàn)了MVC設(shè)計(jì)模式的請求驅(qū)動(dòng)類型的輕量級(jí)Web框架,通過把模型-視圖-控制器分離,將web層進(jìn)行職責(zé)解耦,把復(fù)雜的web應(yīng)用分成邏輯清晰的幾部分,簡化開發(fā),減少出錯(cuò),方便組內(nèi)開發(fā)人員之間的配合。
2、Spring MVC的優(yōu)點(diǎn)
(1)可以支持各種視圖技術(shù),而不僅僅局限于JSP;
(2)與Spring框架集成(如IoC容器、AOP等);
(3)清晰的角色分配:前端控制器(dispatcherServlet) , 請求到處理器映射(handlerMapping), 處理器適配器(HandlerAdapter), 視圖解析器(ViewResolver)。
(4) 支持各種請求資源的映射策略。
核心組件
3、Spring MVC的主要組件?
(1)前端控制器 DispatcherServlet(不需要程序員開發(fā))
作用:接收請求、響應(yīng)結(jié)果,相當(dāng)于轉(zhuǎn)發(fā)器,有了DispatcherServlet 就減少了其它組件之間的耦合度。
(2)處理器映射器HandlerMapping(不需要程序員開發(fā))
作用:根據(jù)請求的URL來查找Handler
(3)處理器適配器HandlerAdapter
注意:在編寫Handler的時(shí)候要按照HandlerAdapter要求的規(guī)則去編寫,這樣適配器HandlerAdapter才可以正確的去執(zhí)行Handler。
(4)處理器Handler(需要程序員開發(fā))
(5)視圖解析器 ViewResolver(不需要程序員開發(fā))
作用:進(jìn)行視圖的解析,根據(jù)視圖邏輯名解析成真正的視圖(view)
(6)視圖View(需要程序員開發(fā)jsp)
View是一個(gè)接口, 它的實(shí)現(xiàn)類支持不同的視圖類型(jsp,freemarker,pdf等等)
4、什么是DispatcherServlet?
Spring的MVC框架是圍繞DispatcherServlet來設(shè)計(jì)的,它用來處理所有的HTTP請求和響應(yīng)。
5、什么是Spring MVC框架的控制器?
控制器提供一個(gè)訪問應(yīng)用程序的行為,此行為通常通過服務(wù)接口實(shí)現(xiàn)。控制器解析用戶輸入并將其轉(zhuǎn)換為一個(gè)由視圖呈現(xiàn)給用戶的模型。Spring用一個(gè)非常抽象的方式實(shí)現(xiàn)了一個(gè)控制層,允許用戶創(chuàng)建多種用途的控制器。
6、Spring MVC的控制器是不是單例模式,如果是,有什么問題,怎么解決?
答:是單例模式,所以在多線程訪問的時(shí)候有線程安全問題,不要用同步,會(huì)影響性能的,解決方案是在控制器里面不能寫字段。
7、請描述Spring MVC的工作流程?描述一下 DispatcherServlet 的工作流程?

(1)用戶發(fā)送請求至前端控制器DispatcherServlet;
(2) DispatcherServlet收到請求后,調(diào)用HandlerMapping處理器映射器,請求獲取Handle;
(3)處理器映射器根據(jù)請求url找到具體的處理器,生成處理器對(duì)象及處理器攔截器(如果有則生成)一并返回給DispatcherServlet;
(4)DispatcherServlet 調(diào)用 HandlerAdapter處理器適配器;
(5)HandlerAdapter 經(jīng)過適配調(diào)用 具體處理器(Handler,也叫后端控制器);
(6)Handler執(zhí)行完成返回ModelAndView;
(7)HandlerAdapter將Handler執(zhí)行結(jié)果ModelAndView返回給DispatcherServlet;
(8)DispatcherServlet將ModelAndView傳給ViewResolver視圖解析器進(jìn)行解析;
(9)ViewResolver解析后返回具體View;
(10)DispatcherServlet對(duì)View進(jìn)行渲染視圖(即將模型數(shù)據(jù)填充至視圖中)
(11)DispatcherServlet響應(yīng)用戶。
8、MVC是什么?MVC設(shè)計(jì)模式的好處有哪些
9、注解原理是什么?
10、Spring MVC常用的注解有哪些?
11、SpingMvc中的控制器的注解一般用哪個(gè),有沒有別的注解可以替代?
12、@Controller注解的作用?
13、@RequestMapping注解的作用?
14、@ResponseBody注解的作用?
15、@PathVariable和@RequestParam的區(qū)別:
16、Spring MVC與Struts2區(qū)別:
17、Spring MVC怎么樣設(shè)定重定向和轉(zhuǎn)發(fā)的?
18、Spring MVC怎么和AJAX相互調(diào)用的?
19、如何解決POST請求中文亂碼問題,GET的又如何處理呢?
20、Spring MVC的異常處理?
21、如果在攔截請求中,我想攔截get方式提交的方法,怎么配置
22、怎樣在方法里面得到Request,或者Session?
23、如果想在攔截的方法里面得到從前臺(tái)傳入的參數(shù),怎么得到?
24、如果前臺(tái)有很多個(gè)參數(shù)傳入,并且這些參數(shù)都是一個(gè)對(duì)象的,那么怎么樣快速得到這個(gè)對(duì)象?
25、Spring MVC中函數(shù)的返回值是什么?
26、Spring MVC用什么對(duì)象從后臺(tái)向前臺(tái)傳遞數(shù)據(jù)的?
27、怎么樣把ModelMap里面的數(shù)據(jù)放入Session里面?
28、Spring MVC里面攔截器是怎么寫的?
29、介紹一下 WebApplicationContext:

下方掃碼關(guān)注公眾號(hào)加我微信【備注:公眾號(hào)】 免費(fèi)領(lǐng)取
程序員這個(gè)職業(yè)需要我們不斷進(jìn)步,需要我們不斷學(xué)習(xí)新的知識(shí)。
喜歡小編的文章可以點(diǎn)點(diǎn)關(guān)注哦!
小編持續(xù)為你分享最新文章 和 福利領(lǐng)取哦
