本文來自java面試題,文中為大家分享了spring相關的面試題,希望可以幫助到大家。1、說一下spring mvc運行流程;2、spring mvc有哪些客戶端;3、@RequestMapping的作用是什么。
一、說一下 spring mvc 運行流程
(相關推薦:java面試題)
Spring運行流程描述:
1、用戶向服務器發(fā)送請求,請求被Spring 前端控制Servelt DispatcherServlet捕獲;
2、DispatcherServlet對請求URL進行解析,得到請求資源標識符(URI)。然后根據(jù)該URI,調(diào)用HandlerMapping獲得該Handler配置的所有相關的對象(包括Handler對象以及Handler對象對應的攔截器),最后以HandlerExecutionChain對象的形式返回;
立即學習“Java免費學習筆記(深入)”;
3、DispatcherServlet 根據(jù)獲得的Handler,選擇一個合適的HandlerAdapter;(附注:如果成功獲得HandlerAdapter后,此時將開始執(zhí)行攔截器的preHandler(...)方法)
4、提取Request中的模型數(shù)據(jù),填充Handler入?yún)?,開始執(zhí)行Handler(Controller)。 在填充Handler的入?yún)⑦^程中,根據(jù)你的配置,Spring將幫你做一些額外的工作:
HttpMessageConveter: 將請求消息(如Json、xml等數(shù)據(jù))轉(zhuǎn)換成一個對象,將對象轉(zhuǎn)換為指定的響應信息;
數(shù)據(jù)轉(zhuǎn)換:對請求消息進行數(shù)據(jù)轉(zhuǎn)換。如String轉(zhuǎn)換成Integer、Double等;
數(shù)據(jù)根式化:對請求消息進行數(shù)據(jù)格式化。 如將字符串轉(zhuǎn)換成格式化數(shù)字或格式化日期等;
數(shù)據(jù)驗證: 驗證數(shù)據(jù)的有效性(長度、格式等),驗證結果存儲到BindingResult或Error中;
5、Handler執(zhí)行完成后,向DispatcherServlet 返回一個ModelAndView對象;
6、根據(jù)返回的ModelAndView,選擇一個適合的ViewResolver(必須是已經(jīng)注冊到Spring容器中的ViewResolver)返回給DispatcherServlet ;
7、ViewResolver 結合Model和View,來渲染視圖;
8、將渲染結果返回給客戶端。
二、spring mvc 有哪些組件?
Spring MVC的核心組件:
1、DispatcherServlet:中央控制器,把請求給轉(zhuǎn)發(fā)到具體的控制類
2、Controller:具體處理請求的控制器
3、HandlerMapping:映射處理器,負責映射中央處理器轉(zhuǎn)發(fā)給controller時的映射策略
4、ModelAndView:服務層返回的數(shù)據(jù)和視圖層的封裝類
5、ViewResolver:視圖解析器,解析具體的視圖
6、Interceptors :攔截器,負責攔截我們定義的請求然后做處理工作
三、@RequestMapping 的作用是什么?
RequestMapping是一個用來處理請求地址映射的注解,可用于類或方法上。用于類上,表示類中的所有響應請求的方法都是以該地址作為父路徑。
RequestMapping注解有六個屬性,下面我們把她分成三類進行說明。
value, method:
value:指定請求的實際地址,指定的地址可以是URI Template 模式(后面將會說明);
method:指定請求的method類型, GET、POST、PUT、DELETE等;
consumes,produces
consumes:指定處理請求的提交內(nèi)容類型(Content-Type),例如application/json, text/html;
produces:指定返回的內(nèi)容類型,僅當request請求頭中的(Accept)類型中包含該指定類型才返回;
params,headers
params: 指定request中必須包含某些參數(shù)值是,才讓該方法處理。
headers:指定request中必須包含某些指定的header值,才能讓該方法處理請求。
以上就是2020全新Java面試題——Spring(三)的詳細內(nèi)容,更多請關注php中文網(wǎng)其它相關文章!
java怎么學習?java怎么入門?java在哪學?java怎么學才快?不用擔心,這里為大家提供了java速學教程(入門到精通),有需要的小伙伴保存下載就能學習啦!
Copyright 2014-2025 http://m.miracleart.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號