利剑无意之JAVA面试题(三)
- SpringMvc中,控制器中的處理方法的返回值有哪些?
返回值可以有很多類型,有String, ModelAndView。ModelAndView類把視圖和數據都合并的一起的,但一般用String比較好。
- springmvc中,如果前臺有很多個參數傳入并且這些參數都是一個對象的那么怎么樣快速得到這個對象?
?
直接在方法中聲明這個對象,SpringMvc就自動會把屬性賦值到這個對象里面。
- SpringMVC的控制器是不是單例模式如果是有什么問題怎么解決?
?
是單例模式,所以在多線程訪問的時候有線程安全問題,不要用同步,會影響性能的,解決方案是在控制器里面不能寫字段。
- Spring MVC的主要組件?
?
(1)前端控制器 DispatcherServlet
作用:接收請求、響應結果,相當于轉發器,有了DispatcherServlet 就減少了其它組件之間的耦合度。
(2)處理器映射器HandlerMapping
作用:根據請求的URL來查找Handler。
(3)處理器適配器HandlerAdapter
注意:在編寫Handler的時候要按照HandlerAdapter要求的規則去編寫,這樣適配器HandlerAdapter才可以正確的去執行Handler。
(4)處理器Handler。
(5)視圖解析器 ViewResolver。
- SpringMvc中如何實現自定義攔截器及使用?
?
有兩種寫法,一種是實現接口,另外一種是繼承適配器類,然后在SpringMvc的配置文件中配置攔截器即可:
<!-- 配置SpringMvc的攔截器 -->
<mvc:interceptors>
<!-- 配置一個攔截器的Bean就可以了 默認是對所有請求都攔截 -->
<bean id="myInterceptor" class="com.MyHandlerInterceptor"></bean>
?
<!-- 只針對部分請求攔截 -->
<mvc:interceptor>
<mvc:mapping path="/modelMap.do" />
<bean class="com.MyHandlerInterceptorAdapter" />
</mvc:interceptor>
</mvc:interceptors>
*************************************
實現HandlerInterceptor接口
preHandle在控制器執行之前執行,最后只能返回true才能進入控制器方法。
postHandle在控制器執行完成后才執行,但方法執行條件為priHandle方法返回true的時候
afterCompletion整個請求中最后才執行的方法,也就是DispatherServlet渲染了對應的視圖之后執行。執行的前提條件是preHandle方法返回值為true
?
- SpringMVC怎么和前端AJAX交互的?
?
通過 jackson 框架就可以把 java 里面的對象直接轉化成 js 可以識別的 json 對象具體步驟如下 :
1.加入jackson相關依賴
2.在接受 Ajax 方法里面可以直接返回 Object,List 等,但方法前面要加上@ResponseBody注解
- Spring Boot的核心注解是哪個?它主要由哪幾個注解組成的?
?
啟動類上面的注解是@SpringBootApplication,它也是 Spring Boot 的核心注解,
主要組合包含了以下 3 個注解:
@SpringBootConfiguration:組合了 @Configuration 注解,實現配置文件的功能。
@EnableAutoConfiguration:打開自動配置的功能,也可以關閉某個自動配置的選項,如關閉數據源自動配置功能: @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class })。
@ComponentScan:Spring組件掃描。
- Spring Boot. Spring MVC和Spring有什么區別?
?
Spring最重要的特征是依賴注入。所有 SpringModules 不是依賴注入就是 IOC 控制反轉。當使用 DI 或者是 IOC 的時候,可以開發松耦合應用。松耦合應用的單元測試可以很容易的進行。
Spring MVC 提供了一種分離式的方法來開發 Web 應用。通過運用像DispatcherServelet,MoudlAndView 和 ViewResolver 等一些簡單的概念,開發Web 應用將會變的非常簡單。Spring 和 SpringMVC 的問題在于需要配置大量的參數。
Spring Boot 通過一個自動配置和啟動的項來目解決這個問題。為了更快的構建產品就緒應用程序,Spring Boot 提供了一些非功能性特征。
- 什么是Spring Boot Stater ?
?
啟動器是一套方便的依賴沒描述符,它可以放在自己的程序中。你可以一站式的獲取你所需要的 Spring 和相關技術,而不需要依賴描述符的通過示例代碼搜索和復制黏貼的負載。
?
- springboot基于java配置的方式整合mybatis的過程?
?
創建maven項目
補全項目文件夾
添加Maven依賴
繼承springboot父項目
添加mybatis啟動器
創建實體類
創建Dao層接口
mybatis映射文件
mybatis配置文件
創建配置類定義數據源Bean和定義SqlSessionFactoryBean
創建配置類定義Bean掃描DAO層接口
application.yml中添加相關配置信息
總結
以上是生活随笔為你收集整理的利剑无意之JAVA面试题(三)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利剑无意之JAVA面试题(二)
- 下一篇: 使用cloudera manager搭建