您好,登錄后才能下訂單哦!
本篇內容介紹了“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”。
“Spring MVC面試題及答案有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。