面試問到springmvc不會怎麼辦?看這篇就夠了,springmvc

joytoy發表於2021-09-09

【面試網】收集整理了一些的常見問題,這些問題可能會在你下一次技術面試中遇到。想成為,這些都是不可避免也是必須要掌握的哦,對於其他模組的面試題,我後續也將單獨分享面試問題和答案。成為的這條路道阻且艱,但是既然選擇了遠方就是選擇了風雨兼程,希望大家都能早日圓自己的架構師夢,同樣也希望我自己可以,除了網站,還做了個公眾號:面試網,關注並加交流群即可獲得我給你準備的精美面試禮包哦~

1、什麼是 SpringMvc?
答:SpringMvc 是 spring 的一個模組,基於 MVC 的一個框架,無需中間整合層來整合。

2、Spring MVC 的優點:
答:
1)它是基於元件技術的.全部的應用物件,無論控制器和檢視,還是業務物件之類的都是 java元件.並且和 Spring 提供的其他基礎結構緊密整合.
2)不依賴於 Servlet API(目標雖是如此,但是在實現的時候確實是依賴於 Servlet 的)
3)可以任意使用各種檢視技術,而不僅僅侷限於 JSP
4)支援各種請求資源的對映策略
5)它應是易於擴充套件的

3、SpringMVC 工作原理?
答:
1)客戶端傳送請求到 DispatcherServlet
2)DispatcherServlet 查詢 handlerMapping 找到處理請求的 Controller
3)Controller 呼叫業務邏輯後,返回 ModelAndView
4)DispatcherServlet 查詢 ModelAndView,找到指定檢視
5)檢視將結果返回到客戶端

4、SpringMVC 流程?
答:
1)使用者傳送請求至前端控制器 DispatcherServlet。
2)DispatcherServlet 收到請求呼叫 HandlerMapping 處理器對映器。
3)處理器對映器找到具體的處理器(可以根據 xml 配置、註解進行查詢),生成處理器物件及處理器攔截器(如果有則生成)一併返回給DispatcherServlet。
4)DispatcherServlet 呼叫 HandlerAdapter 處理器介面卡。
5)HandlerAdapter 經過適配呼叫具體的處理器(Controller,也叫後端控制器)。
6)Controller 執行完成返回 ModelAndView。
7)HandlerAdapter 將 controller 執行結果 ModelAndView 返回給 DispatcherServlet。
8)DispatcherServlet 將 ModelAndView 傳給 ViewReslover 檢視解析器。
9)ViewReslover 解析後返回具體 View。
10)DispatcherServlet 根據 View 進行渲染檢視(即將模型資料填充至檢視中)。
11)DispatcherServlet 響應使用者。

5、講下 SpringMvc 的執行流程
答:系統啟動的時候根據配置檔案建立 spring 的容器, 首先是傳送 http 請求到核心控制器disPatherServlet,spring 容器透過對映器去尋找業務控制器,使用介面卡找到相應的業務類,在進業務類時進行資料封裝,在封裝前可能會涉及到型別轉換,執行完業務類後使用ModelAndView 進行檢視轉發,資料放在 model 中,用 map 傳遞資料進行頁面顯示。

6、SpringMvc 的控制器是不是單例模式,如果是,有什麼問題,怎麼解決?
答:是單例模式,所以在多執行緒訪問的時候有執行緒安全問題,不要用同步,會影響效能的,解決方案是在控制器裡面不能寫欄位。

7、如果你也用過 struts2.簡單介紹下 springMVC 和 struts2 的區別有哪些?
答:
1)springmvc 的入口是一個 servlet 即前端控制器,而 struts2 入口是一個 filter 過慮器。
2)springmvc 是基於方法開發(一個 url 對應一個方法),請求引數傳遞到方法的形參,可以設計為單例或多例(建議單例),struts2 是基於類開發,傳遞引數是透過類的屬性,只能設計為多例。
3)Struts 採用值棧儲存請求和響應的資料,透過 OGNL 存取資料,springmvc 透過引數解析器是將 request 請求內容解析,並給方法形參賦值,將資料和檢視封裝成 ModelAndView物件,最後又將 ModelAndView 中的模型資料透過 reques 域傳輸到頁面。Jsp 檢視解析器預設使用 jstl。

8、SpingMvc 中的控制器的註解一般用那個,有沒有別的註解可以替代?
答:一般用@Conntroller 註解,表示是表現層,不能用用別的註解代替。

9、 @RequestMapping 註解用在類上面有什麼作用?
答:是一個用來處理請求地址對映的註解,可用於類或方法上。用於類上,表示類中的所有響應請求的方法都是以該地址作為父路徑。

10、怎麼樣把某個請求對映到特定的方法上面?
答:直接在方法上面加上註解@RequestMapping,並且在這個註解裡面寫上要攔截的路徑

11、如果在攔截請求中,我想攔截 get 方式提交的方法,怎麼配置?
答:可以在@RequestMapping 註解裡面加上 method=RequestMethod.GET

12、怎麼樣在方法裡面得到 Request,或者 Session?
答:直接在方法的形參中宣告 request,SpringMvc 就自動把 request 物件傳入

13、我想在攔截的方法裡面得到從前臺傳入的引數,怎麼得到?
答:直接在形參裡面宣告這個引數就可以,但必須名字和傳過來的引數一樣

14、如果前臺有很多個引數傳入,並且這些引數都是一個物件的,那麼怎麼樣快速得到這個物件?
答:直接在方法中宣告這個物件,SpringMvc 就自動會把屬性賦值到這個物件裡面。

15、SpringMvc 中函式的返回值是什麼?
答:返回值可以有很多型別,有 String, ModelAndView,當一般用 String 比較好。

16、SpringMVC 怎麼樣設定重定向和轉發的?
答:在返回值前面加"forward:“就可以讓結果轉發,譬如"forward:user.do?name=method4” 在返回值前面加"redirect:“就可以讓返回值重定向,譬如"redirect:”

17、SpringMvc 用什麼物件從後臺向前臺傳遞資料的?
答:透過 ModelMap 物件,可以在這個物件裡面用 put 方法,把物件加到裡面,前臺就可以透過 el 表示式拿到。

18、SpringMvc 中有個類把檢視和資料都合併的一起的,叫什麼?
答:叫 ModelAndView。

19、怎麼樣把 ModelMap 裡面的資料放入 Session 裡面?
答:可以在類上面加上@SessionAttributes 註解,裡面包含的字串就是要放入 session 裡面的 key

20、SpringMvc 怎麼和 AJAX 相互呼叫的?
答:
透過 Jackson 框架就可以把 Java 裡面的物件直接轉化成 Js 可以識別的 Json 物件。
具體步驟如下 :
1)加入 Jackson.jar
2)在配置檔案中配置 json 的對映
3)在接受 Ajax 方法裡面可以直接返回 Object,List 等,但方法前面要加上@ResponseBody註解

21、當一個方法向 AJAX 返回特殊物件,譬如 Object,List 等,需要做什麼處理?
答:要加上@ResponseBody 註解

22、SpringMvc 裡面攔截器是怎麼寫的
答:有兩種寫法,一種是實現介面,另外一種是繼承介面卡類,然後在 SpringMvc 的配置檔案中配置攔截器即可:

<!-- 配置 SpringMvc 的攔截器 -->
<mvc:interceptors>
 <!-- 配置一個攔截器的 Bean 就可以了 預設是對所有請求都攔截 -->
 <bean id="myInterceptor" class="com.et.action.MyHandlerInterceptor"></bean>
 <!-- 只針對部分請求攔截 -->
 <mvc:interceptor>
 <mvc:mapping path="/modelMap.do" />
 <bean class="com.et.action.MyHandlerInterceptorAdapter" />
 </mvc:interceptor>
</mvc:interceptors>

嗨,你好呀,未來的架構師,本文由面試網收集整理並進行編輯釋出,謝謝大家的支援~

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4650/viewspace-2825924/,如需轉載,請註明出處,否則將追究法律責任。

相關文章