最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

SpringMVC面試

2022-04-09 00:50 作者:吾之利劍  | 我要投稿

1、什么是SpringMVC(或者MVC是什么);*

????Spring MVC 是spring框架的一個模塊,是一個基于mvc的web框架。

????Model(模型):數(shù)據(jù)模型,提供要展示的數(shù)據(jù);

????View(視圖):負責進行模型的展示;

????Controller(控制器)是應(yīng)用程序中處理用戶交互的部分;


2、SpringMVC工作流程;*

????1.用戶發(fā)送請求至前端控制器DispatcherServlet

????2.DispatcherServlet收到請求調(diào)用處理器映射器HandlerMapping。

????3.處理器映射器根據(jù)請求url找到具體的處理器,生成處理器對象及處理器攔截器(如果有則生成)一并返回給DispatcherServlet(此時處理器映射器返回的處理器對象包含:包名+類名+方法名)。

?????4.DispatcherServlet通過HandlerAdapter處理器適配器調(diào)用處理器

? ???5.處理器適配器HandlerAdapter將會根據(jù)適配的結(jié)果去執(zhí)行Handler。

? ? ?6.Handler執(zhí)行完成返回ModelAndView。

? ???7.HandlerAdapter將Handler執(zhí)行結(jié)果ModelAndView返回到前端控制器DispatcherServlet

? ???8.前端控制器DispatcherServlet將ModelAndView傳給ViewReslover視圖解析器。

?????9.視圖解析器ViewReslover解析后返回具體View

????10.前端控制器DispatcherServlet對View進行渲染視圖。

? ???11.前端控制器DispatcherServlet向用戶響應(yīng)結(jié)果。


3、SpringMVC主要組件(五大組件);*

  1. DispatcherServlet:前端控制器,用于請求到達前端控制器,由它調(diào)用其他組件處理用戶的請求。

  2. HandlerMapping:處理器映射器,負責根據(jù)用戶請求找到Handler(處理器),springmvc提供了不同的映射器實現(xiàn)方式。

  3. Handler:后端控制器(處理器),對具體的用戶請求進行處理。

  4. HandlerAdapter:處理器適配器,通過HandlerAdapter對處理器進行執(zhí)行。

  5. View Resolver:視圖解析器,負責將處理結(jié)果生成view視圖。

4、SpringMVC九大組件;

????1、MultipartResolver(文件處理器) ? ? 對應(yīng)的初始化方法是initMultipartResolver(context),用于處理上傳請求。 ? ? ?處理方法是將普通的request包裝成MultipartHttpServletRequest,后者可以直接調(diào)用getFile方法獲取File。

????2、LocaleResolver(當前環(huán)境處理器) ? ? ?對應(yīng)的初始化方法是initLocaleResolver(context),這就相當于配置數(shù)據(jù)庫的方言一樣,有了這個就可以對不同區(qū)域的用戶顯示不同的結(jié)果。SpringMVC主要有兩個地方用到了Locale: ? ? ? 1、是ViewResolver視圖解析的時候; ? ? ? 2、是用到國際化資源或者主題的時候。

????3、ThemeResolver(主題處理器) 對應(yīng)的初始化方法是initThemeResolver(context),用于解析主題。 SpringMVC中一個主題對應(yīng)一個properties文件,里面存放著跟當前主題相關(guān)的所有資源,如圖片、css樣式等。 SpringMVC的主題也支持國際化。

????4、HandlerMapping(處理器映射器) 對應(yīng)的初始化方法是initHandlerMappings(context),這就是根據(jù)用戶請求的資源uri來查找Handler的。 在SpringMVC中會有很多請求,每個請求都需要一個Handler處理,具體接收到一個請求之后使用哪個Handler進行處理呢?這就是HandlerMapping需要做的事。

????5、HandlerAdapters(處理器適配器) 對應(yīng)的初始化方法是initHandlerAdapters(context),從名字上看,它就是一個適配器。 Servlet需要的處理方法的結(jié)構(gòu)卻是固定的,都是以request和response為參數(shù)的方法。 如何讓固定的Servlet處理方法調(diào)用靈活的Handler來進行處理呢?這就是HandlerAdapters要做的事情。

????6、HandlerExceptionResolvers(異常處理器) 對應(yīng)的初始化方法是initHandlerExceptionResolvers(context),其它組件都是用來干活的。 在干活的過程中難免會出現(xiàn)問題,出問題后怎么辦呢?這就要有一個專門的角色對異常情況進行處理,在SpringMVC中就是HandlerExceptionResolver。

????7、RequestToViewNameTranslator(視圖名稱翻譯器), 對應(yīng)的初始化方法是initRequestToViewNameTranslator(context),有的Handler處理完后并沒有設(shè)置View也沒有設(shè)置ViewName,這時就需要從request獲取ViewName了,如何從request中獲取ViewName就是RequestToViewNameTranslator要做的事情了。

????8、ViewResolvers(頁面渲染處理器) 對應(yīng)的初始化方法是initViewResolvers(context),ViewResolver用來將String類型的視圖名和Locale解析為View類型的視圖。 View是用來渲染頁面的,也就是將程序返回的參數(shù)填入模板里,生成html(也可能是其它類型)文件。

????9、FlashMapManager(參數(shù)傳遞管理器) 對應(yīng)的初始化方法是initFlashMapManager(context),用來管理FlashMap的,F(xiàn)lashMap主要用在redirect重定向中傳遞參數(shù)。


5、SpringMVC有哪些注解;*

????@RequestMapping:用于處理請求 url 映射的注解,可用于類或方法上。用于類上,則表示類中的所有響應(yīng)請求的方法都是以該地址作為父路徑。

????@RequestBody:注解實現(xiàn)接收http請求的json數(shù)據(jù),將json轉(zhuǎn)換為java對象。

????@ResponseBody:注解實現(xiàn)將conreoller方法返回對象轉(zhuǎn)化為json對象響應(yīng)給客戶。

????@Resource和@Autowired:@Resource和@Autowired都是做bean的注入時使用,其實? ? ? ? ? ? @Resource并不是Spring的注解,它的包是javax.annotation.Resource,需要導(dǎo)入,但是Spring支持該注解的注入。

????????@PathVariable用于將請求URL中的模板變量映射到功能處理方法的參數(shù)上,即取出uri模板中的變量作為參數(shù)

6、SpringMVC怎么樣設(shè)定重定向和轉(zhuǎn)發(fā)的?

????1、轉(zhuǎn)發(fā):在返回值前面加"forward:",譬如"forward:user.do?name=method4"

????2、重定向:在返回值前面加"redirect:",譬如"redirect:http://www.baidu.com"可能會問轉(zhuǎn)發(fā)與重定向的區(qū)別。

7、Spring事務(wù)傳播機制是什么;

Spring事務(wù)定義了7種傳播機制:

????1、PROPAGATION_REQUIRED:默認的Spring事物傳播級別,若當前存在事務(wù),則加入該事 務(wù),若不存在事務(wù),則新建一個事務(wù)。

????2、PAOPAGATION_REQUIRE_NEW:若當前沒有事務(wù),則新建一個事務(wù)。若當前存在事務(wù),則新建一個事務(wù),新老事務(wù)相互獨立。外部事務(wù)拋出異?;貪L不會影響內(nèi)部事務(wù)的正常提交。

????3、PROPAGATION_NESTED:如果當前存在事務(wù),則嵌套在當前事務(wù)中執(zhí)行。如果當前沒有事務(wù),則新建一個事務(wù),類似于REQUIRE_NEW。

????4、PROPAGATION_SUPPORTS:支持當前事務(wù),若當前不存在事務(wù),以非事務(wù)的方式執(zhí)行。

????5、PROPAGATION_NOT_SUPPORTED:以非事務(wù)的方式執(zhí)行,若當前存在事務(wù),則把當前事務(wù)掛起。

????6、PROPAGATION_MANDATORY:強制事務(wù)執(zhí)行,若當前不存在事務(wù),則拋出異常。

????7、PROPAGATION_NEVER:以非事務(wù)的方式執(zhí)行,如果當前存在事務(wù),則拋出異常。

8、擴展

? ? 1、Spring、SpringMVC和Springboot的區(qū)別;

????2、攔截器與過濾器的區(qū)別;

? ? 3、SpringMVC或者SpringBoot有哪些設(shè)計模式;


以上內(nèi)容僅供參考,請合理利用搜索引擎!

SpringMVC面試的評論 (共 條)

分享到微博請遵守國家法律
武川县| 塔城市| 通山县| 杭锦旗| 台州市| 潜江市| 宝山区| 和顺县| 泽普县| 榕江县| 海伦市| 交口县| SHOW| 德江县| 万州区| 濮阳县| 正蓝旗| 泽普县| 如东县| 天津市| 黎平县| 读书| 咸宁市| 塘沽区| 汝城县| 兴城市| 镇巴县| 鹰潭市| 渭源县| 即墨市| 略阳县| 乐清市| 改则县| 新沂市| 靖边县| 漳州市| 朝阳区| 苏州市| 长沙县| 黎平县| 临颍县|