IT面試題:附帶答案的14道Spring MVC面試題

陝西優就業發表於2019-11-18

  Spring MVC框架是用於開發Web應用程式的最流行的Java框架之一。如果你一直在使用Java和開發基於Web的應用程式,那麼你很可能已經在專案中使用了Spring MVC。

  在過去十年中,它已成為開發Java Web應用程式的框架。Spring MVC是基於經典的MVC(模型 - 檢視 - 控制器)設計模式。由於其廣泛的普及性和實用性,大多數Java開發工作需要對Spring和Spring MVC有一定的瞭解。

       接下來 陝西優就業小編就給大家分享一篇相關面試題。


  1、 MVC是設計模式的縮寫,它代表什麼?它背後的思想是什麼

  MVC是模型 - 檢視 - 控制器設計模式的縮寫。該模式基於關注點分離設計原理,該原理促進處理不同層的不同功能和層之間的鬆散耦合。 在MVC模式中,Model包含View和Controler幫助在請求處理和路由中呈現的資料。

  2、是否需要在類路徑中使用spring-mvc.jar,或者是spring-core的一部分?

  spring-mvc.jar不是spring-core的一部分,如果要在Java專案中使用Spring MVC框架,則必須在應用程式的類路徑中包含spring-mvc.jar。在Java Web應用程式中,spring-mvc.jar通常放在/ WEB-INF / lib資料夾中。

  3、什麼是DispatcherServlet以及它用於什麼?

  DispatcherServlet是Front Controller設計模式的一個實現,它處理對Spring MVC應用程式的所有傳入Web請求。前端控制器模式是Web應用程式中的常見模式,其作用是接收所有請求並將其路由到應用程式的不同元件以進行實際處理。

  在Spring MVC的情況下,DispatcherServlet將Web請求路由到Spring MVC控制器。

  在Spring MVC中,DispatcherServlet用於查詢正確的Controler以處理請求,它在處理程式對映的幫助下執行,例如@RequestMapping註釋。

  它還負責將邏輯檢視名稱委派給ViewResolver,然後將呈現的響應傳送到客戶端。

  4、DispatcherServlet如何透過應用程式上下文例項化?

  DispatcherServlet由Tomcat或Jetty等Servlet容器例項化。必須將DispatcherServlet定義到web.xml檔案中。

  可以看到load-on-startup標記為1,當Spring MVC應用程式部署到Tomcat或任何其他Servlet容器時,將例項化DispatcherServlet。在例項化期間,它會查詢檔案servlet-name-context.xml,然後初始化此檔案中定義的bean。

  5、Spring MVC中的root應用程式上下文是什麼?怎麼裝載的?

  在Spring MVC中,使用ContextLoaderListener載入的上下文稱為“root”應用程式上下文,它屬於整個應用程式,而使用DispatcherServlet初始化的應用程式上下文實際上是特定於該servlet。

  從技術上講,Spring MVC允許在Spring MVC Web應用程式中使用多個DispatcherServlet ,因此可能存在多個這樣的上下文,每個上下文都針對相應的servlet,但是具有相同的根上下文。

  6、@Controller註釋的用途?如何在沒有註釋的情況下建立控制器?

  @Controller是用來定義Controller的Spring MVC註釋,但實際上它只是一個原型註釋。甚至可以在沒有@Controller的情況下透過使用@Component註釋Spring MVC控制器類來建立控制器。請求對映到處理程式方法的實際工作是使用@RequestMapping註釋來完成的。

  7、什麼是ContextLoaderListener,它的作用是什麼?

  ContextLoaderListener是一個監聽器,這有助於引導Spring MVC的。顧名思義它載入並建立ApplicationContext,因此不必編寫顯式程式碼來建立它。應用程式上下文是Spring bean離開的地方。對於Web應用程式,有一個名為WebAppliationContext的子類。

  ContextLoaderListener還將ApplicationContext的生命週期與ServletContext的生命週期聯絡起來。這可以使用getServletContext()方法從WebApplicationContext獲取ServletContext。

  8、傳入請求如何對映到控制器和方法?

  有時也會問這個問題DispatcherServlet如何知道哪個Controller應該處理請求?

  Spring使用處理程式對映將控制器與請求相關聯,兩個常用的處理程式對映是BeanNameUrlHandlerMapping和SimpleUrlHandlerMapping。

  在BeanNameUrlHandlerMapping中,當請求url與bean的名稱匹配時,bean定義中的類是將處理請求的控制器。

  另一方面,在SimpleUrlHandlerMapping中,對映更明確。可以指定URL的數量,並且每個URL可以與控制器顯式關聯。

  順便說一句,如果你使用註釋來配置Spring MVC,那麼應該使用@RequestMapping註釋將傳入請求對映到控制器和處理程式方法。

  還可以透過URI路徑,查詢引數,請求的HTTP方法以及請求中存在的HTTP標頭配置@RequestMapping批註。

  9、@RequestParam用於什麼?

  @RequestParam是一個Spring MVC註釋,其被用於提取從URL中控制器的處理程式方法請求引數或查詢引數,

  @RequestParam註釋也支援資料型別轉換,例如這裡可以看到一個String被自動轉換為long,但它也可能導致一個異常,如果查詢引數不存在或型別不匹配的情況下 還可以使用requried = false使引數成為可選引數,例如@RequestParam(value =“id”,required = false)

  10、什麼是模型?

  Model再次是封裝資料或輸出以進行渲染的引用。始終建立模型並將其傳遞給Spring MVC中的檢視。如果對映的控制器方法將Model作為方法引數,則Spring框架會自動將模型例項注入該方法。注入模型上設定的任何屬性都將保留並傳遞給View。

  11、為什麼控制器可測試工件?

  在Spring中,MVC控制器是可測試的工件,因為它們不直接與任何View技術相結合。它們只返回一個邏輯檢視名稱,可以輕鬆測試。

  12、spring mvc 有哪些元件?

  (1)前置控制器 DispatcherServlet。

  (2)對映控制器 HandlerMapping。

  (3)處理器 Controller。

  (4)模型和檢視 ModelAndView。

  (5)檢視解析器 ViewResolver。

  12、 @Autowired 和@Resource 的區別?

  @Autowired預設按照byType方式進行bean匹配,@Resource預設按照byName方式進行bean匹配

  @Autowired是Spring的註解,@Resource是J2EE的註解,這個看一下匯入註解的時候這兩個註解的包名就一清二楚了

  Spring屬於第三方的,J2EE是Java自己的東西,因此,建議使用@Resource註解,以減少程式碼和Spring之間的耦合。

  13、什麼是Spring的MVC框架?

  Spring 配備構建Web 應用的全功能MVC框架。Spring可以很便捷地和其他MVC框架整合,如Struts,Spring 的MVC框架用控制反轉把業務物件和控制邏輯清晰地隔離。它也允許以宣告的方式把請求引數和業務物件繫結。

  14、在渲染階段,如何選擇正確的檢視?

  檢視由Spring MVC中的ViewResolver選擇。 當Controller向DispatcherServlet返回邏輯檢視名稱時,它會查詢ViewResolver以查詢正確的View。ViewResolver根據其實現將邏輯檢視解析為物理資源,例如,JSP頁面或FreeMarker模板。

  例如,InternalResourceViewResolver是一個預設的ViewResolver,用於轉換邏輯檢視名稱,例如 使用字首和字尾“hello”到“/WEB-INF/hello.jsp”。


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

相關文章