BATJ大廠高頻SpringMvc面試題,你能答出多少(大廠面試必刷)

 

1、什麼是 SpringMvc?

答:SpringMvc 是 spring 的一個模塊,基於 MVC 的一個框架,無需中間整合層來整

2、Spring MVC 的優點:

答:

1)它是基於組件技術的.全部的應用對象.

無論控制器和視圖,還是業務對象之類的都是 組件.並且和 Spring 提供的其他基礎結構緊密集

成.

2)不依賴於 Servlet API(目標雖是如此,但是在實現的時候確實是依賴於 Servlet 的)3)

可以任意使用各種視圖技術,而不僅僅侷限於 JSP4)支持各種請求資源的映射策略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 響應用戶。

6、SpringMvc 的控制器是不是單例模式,如果是,有什麼問題,怎麼解決?

答:是單例模式,所以在多線程訪問的時候有線程安全問題,不要用同步,會影響性能的,解方案是

在控制器裏面不能寫字段。

7、如果你也用過 struts2.簡單介紹下 springMVC 和 struts2 的區別有哪些?

答:

1)springmvc 的入口是一個 servlet 即前端控制器,而 struts2 入口是一個 filter 過慮器.

2)springmvc 是基於方法開發(一個 url 對應一個方法),請求參數傳遞到方法的形參,設計

爲單例或多例(建議單例),struts2 是基於類開發,傳遞參數是通過類的屬性,只能計爲多例。

3)Struts 採用值棧存儲請求和響應的數據,通過 OGNL 存取數據.

springmvc 通過參析器是將 request 請求內容解析.

並給方法形參賦值,將數據和視圖封裝成 ModelAnd對象.

最後又將 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 等,但方法前面要加上@ResponseB註解

21、當一個方法向 AJAX 返回特殊對象,譬如 Object,List 等,需要做什麼處理?

答:要加上@ResponseBody 註解

22、SpringMvc 裏面攔截器是怎麼寫的?

答:有兩種寫法,一種是實現接口,另外一種是繼承適配器類,然後在 SpringMvc 的配置文配置攔截器即可:
file

各大公司面試題集合:

 

獲取方式 關注博主後,私信回覆【面試】即可免費獲取以上所有資料

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章