SpringMvc面試題


f-sm-1. 講下SpringMvc和Struts1,Struts2的比較的優勢

  性能上Struts1>SpringMvc>Struts2 開發速度上SpringMvc和Struts2差不多,比Struts1要高

 

 

f-sm-2. 講下SpringMvc的核心入口類是什么,Struts1,Struts2的分別是什么

  SpringMvc的是DispatchServlet,Struts1的是ActionServlet,Struts2的是StrutsPrepareAndExecuteFilter

 

 

f-sm-3. SpringMvc的控制器是不是單例模式,如果是,有什么問題,怎么解決

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

 

 

f-sm-4. SpingMvc中的控制器的注解一般用那個,有沒有別的注解可以替代

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

 

 

f-sm-5. @RequestMapping注解用在類上面有什么作用

  用於類上,表示類中的所有響應請求的方法都是以該地址作為父路徑。

 

 

f-sm-6. 怎么樣把某個請求映射到特定的方法上面

  直接在方法上面加上注解@RequestMapping,並且在這個注解里面寫上要攔截的路徑

 

 

f-sm-7. 如果在攔截請求中,我想攔截get方式提交的方法,怎么配置

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

 

 

f-sm-8. 如果在攔截請求中,我想攔截提交參數中包含"type=test"字符串,怎么配置

  可以在@RequestMapping注解里面加上params="type=test"

 

 

f-sm-9. 我想在攔截的方法里面得到從前台傳入的參數,怎么得到

  直接在形參里面聲明這個參數就可以,但必須名字和傳過來的參數一樣

 

 

f-sm-10. 如果前台有很多個參數傳入,並且這些參數都是一個對象的,那么怎么樣快速得到這個對象

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

 

 

f-sm-11. 怎么樣在方法里面得到Request,或者Session

  直接在方法的形參中聲明request,SpringMvc就自動把request對象傳入

 

 

f-sm-12. SpringMvc中函數的返回值是什么.

  返回值可以有很多類型,有String, ModelAndView,當一般用String比較好

 

 

f-sm-13. SpringMvc怎么處理返回值的

  SpringMvc根據配置文件中InternalResourceViewResolver的前綴和后綴,用前綴+返回值+后綴組成完整的返回值

 

 

f-sm-14. SpringMVC怎么樣設定重定向和轉發的

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

 

 

f-sm-15. SpringMvc用什么對象從后台向前台傳遞數據的

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

 

 

f-sm-16. SpringMvc中有個類把視圖和數據都合並的一起的,叫什么

  叫ModelAndView

 

 

f-sm-17. 怎么樣把ModelMap里面的數據放入Session里面

  可以在類上面加上@SessionAttributes注解,里面包含的字符串就是要放入session里面的key

 

 

f-sm-18. SpringMvc怎么和AJAX相互調用的

  通過Jackson框架就可以把Java里面的對象直接轉化成Js可以識別的Json對象 具體步驟如下 1.加入Jackson.jar 2.在配置文件中配置json的映射 3.在接受Ajax方法里面可以直接返回Object,List等,但方法前面要加上@ResponseBody注解

 

 

f-sm-19. 當一個方法向AJAX返回特殊對象,譬如Object,List等,需要做什么處理

  要加上@ResponseBody注解

 

 

f-sm-20. 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>

 

f-sm-21. 講下SpringMvc的執行流程

  系統啟動的時候根據配置文件創建spring的容器, 首先是發送http請求到核心控制器disPatherServlet,spring容器通過映射器去尋找業務控制器, 使用適配器找到相應的業務類,在進業務類時進行數據封裝,在封裝前可能會涉及到類型轉換,執行完業務類后使用ModelAndView進行視圖轉發,數據放在model中,用map傳遞數據進行頁面顯示。


免責聲明!

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



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