ssm常見面試題


1. 什么是DI或者IOC?請解釋下Spring IOC。

IOC:即“控制反轉”,是一種設計思想,是指創建對象的控制權的轉移,以前創建對象的主動權和創建時機是由自己把控的,而現在這種權力轉移到容器,對象與對象之間松散耦合,也利於功能復用,更重要的是使得程序的整個體系結構變得非常靈活。DI(依賴注入)和控制反轉是同一個概念的不同角度描述,所謂依賴注入就是應用程序依賴於IoC容器,在運行時需要IoC容器來動態提供對象需要的外部資源。

Java中依賴注入有以下三種實現方式:構造器注入、Setter方法注入、接口注入。

2.Spring AOP

3.SpringMVC的工作流程?

1、用戶發送請求至前端控制器DispatcherServlet;

2、DispatcherServlet收到請求調用HandlerMapping處理器映射器;

3、處理器映射器找到具體的處理器,生成處理器對象及處理器攔截器(如果有則生成)一並返回給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響應用戶。

2. SpringMVC常用的注解有哪些?

@RequestMapping:用於請求url映射。

@RequestBody:注解實現接收http請求的json數據,將json轉換為java對象。

@ResponseBody:注解實現將conreoller方法返回對象轉化為json對象響應給客戶。

 

3. 如何解決get和post亂碼問題?

解決post請求亂碼:我們可以在web.xml里邊配置一個CharacterEncodingFilter 過濾器。設置為utf-8。

解決get請求亂碼有兩種方法個:

1)修改tomcat配置文件添加編碼和工程編碼一致;

2) 另一種方法對參數進行重新編碼;

String username = new String(Request.getParameter("userName").getBytes("ISO8859-1"),"utf-8")。

 

4. springmvc的優點?

1)可以支持各種視圖技術,而不僅僅局限於JSP;

2)與Spring框架集成(如IoC容器、AOP等);

3) 清晰的角色分配:前端控制器(dispatcherServlet) , 請求到處理器映射(handlerMapping), 處理器適配器(HandlerAdapter), 視圖解析器(ViewResolver)

 

5. 什么是springmvc?

SpringMVC是一種基於Java的實現了MVC設計模式的請求驅動類型的輕量級Web框架,即使用了MVC架構模式的思想,將web層進行職責解耦,基於請求驅動指的就是使用請求-響應模型。MVC: Model View Controller 模型-視圖-控制器 。

視圖:展示給用戶的視圖;

模型:表示數據和業務處理規則。模型返回的數據是獨立的,這樣的一個模式能夠為多個視圖提供數據,這樣一來模型的代碼只需要寫一次便能夠被多個視圖重用,減少了代碼的重復性;

控制器:接受用戶的輸入並調用相應的模型和視圖來完成用戶的需求。

 

6.SpringMVC怎么樣設定重定向和轉發的?

在返回值前面加"forward:"就可以讓結果轉發,譬如"forward:user.do?name=method4" 在返回值前面加"redirect:"就可以讓返回值重定向,譬如"redirect:"。

7、Spring MVC的主要組件?

(1)前端控制器 DispatcherServlet(不需要程序員開發)

作用:接收請求、響應結果 相當於轉發器,有了DispatcherServlet 就減少了其它組件之間的耦合度。

(2)處理器映射器HandlerMapping(不需要程序員開發)

作用:根據請求的URL來查找Handler

(3)處理器適配器HandlerAdapter

注意:在編寫Handler的時候要按照HandlerAdapter要求的規則去編寫,這樣適配器HandlerAdapter才可以正確的去執行Handler。

(4)處理器Handler(需要程序員開發)

(5)視圖解析器 ViewResolver(不需要程序員開發)

作用:進行視圖的解析 根據視圖邏輯名解析成真正的視圖(view)

(6)視圖View(需要程序員開發jsp)

View是一個接口, 它的實現類支持不同的視圖類型(jsp,freemarker,pdf等等)

 

8、Spring MVC的異常處理 ?

答:可以將異常拋給Spring框架,由Spring框架來處理;我們只需要配置簡單的異常處理器,在異常處理器中添視圖頁面即可。

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

答:是單例模式,所以在多線程訪問的時候有線程安全問題,不要用同步,會影響性能的,解決方案是在控制器里面不能寫字段。

10、SpingMvc中的控制器的注解一般用那個,有沒有別的注解可以替代?

答:一般用@Conntroller注解,表示是表現層,不能用別的注解代替。

11、 @RequestMapping注解用在類上面有什么作用?

答:是一個用來處理請求地址映射的注解,可用於類或方法上。用於類上,表示類中的所有響應請求的方法都是以該地址作為父路徑。

12、如果在攔截請求中,我想攔截get方式提交的方法,怎么配置?

答:可以在@RequestMapping注解里面加上method=RequestMethod.GET。

13、如果前台有很多個參數傳入,並且這些參數都是一個對象的,那么怎么樣快速得到這個對象?

答:直接在方法中聲明這個對象,SpringMvc就自動會把屬性賦值到這個對象里面。

14、SpringMvc中函數的返回值是什么?

答:返回值可以有很多類型,有String, ModelAndView,但一般用String比較好。

15、SpringMvc用什么對象從后台向前台傳遞數據的?

答:通過ModelMap對象,可以在這個對象里面用put方法,把對象加到里面,前台就可以通過el表達式拿到。

16、注解原理

注解本質是一個繼承了Annotation的特殊接口,其具體實現類是Java運行時生成的動態代理類。而我們通過反射獲取注解時,返回的是Java運行時生成的動態代理對象。通過代理對象調用自定義注解的方法,會最終調用AnnotationInvocationHandler的invoke方法。該方法會從memberValues這個Map中索引出對應的值。而memberValues的來源是Java常量池。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM