SpringMVC常見面試題總結【概念】

什麼是Spring MVC?介紹你對SpringMVC的理解。

springmvc是一個基於java實現了mvc設計模式的輕量級web框架,經過把model,view,controller分離,將web層進行解耦,把複雜的web應用分紅幾部分,簡化開發。前端

SpringMVC的流程?

1.用戶發送請求被前端DispatcherServlet捕獲, 2.DispatcherServlet捕獲到請求後,調用HandlerMapping處理映射器,請求獲取Handle 3.處理器映射器跟據請求url找到具體的處理器,生成處理器對象及處理器攔截器並返回給DispatcherServlet 4.DispatcherServlet調用HandlerAdapter處理器適配器 5.HandlerAdapter通過適配調用handler 6.Handler執行完成返回ModelAndView 7.HandlerApdater將Handler執行結果ModelAndView返回給DispatcherServlet 8.DispatcherServlet講講ModelAndView傳給ViewResolver視圖解析器進行解析 9.ViewResolver解析後返回具體View 10.DispatcherServlet對View進行視圖渲染(即將模型數據充至視圖中)而後DispatcherServlet響應用戶java

SpringMVC的優勢:

與spring框架繼承,支持各類請求資源的映射策略,支持各類視圖技術程序員

SpringMVC的主要組件?

前端控制器DispatcherServlet: 做用:接受請求,響應結果,至關於轉發器 處理器映射器HandlerMapping 做用:跟據請求的·url來查找Handler 處理器適配器HandlerAdapter 處理器Handler(須要程序員開發) 視圖解析器 ViewResolver(不須要程序員開發) 做用:進行視圖的解析,根據視圖邏輯名解析成真正的視圖視圖View(須要程序員開發jsp)web

SpringMVC怎樣設置重定向和轉發?

1.轉發:在返回值前面加「forward」 2.重定向:在返回值前面加:「redirect」spring

SpringMVC怎麼樣和AJAX相互調用的?

經過jackson框架把java裏面的對象直接轉化爲js能夠識別的json對象,具體步驟: 加入jar包:jackson.jar 在配置文件中配置json的映射 在接受Ajax方法裏面直接返回list等,但在方法前面加@ResponseBody註解json

如何解決POST請求中文亂碼問題,GET又如處理?

1.解決post請求亂碼方法 在web.xml配置一個過濾器,設置成utf-8設計模式

<filter>

    <filter-name>CharacterEncodingFilter</filter-name>

    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

    <init-param>

        <param-name>encoding</param-name>

        <param-value>utf-8</param-value>

    </init-param>

</filter>

<filter-mapping>

    <filter-name>CharacterEncodingFilter</filter-name>

    <url-pattern>/*</url-pattern>

</filter-mapping>

2.get請求解決方法 修改tomcat配置文件添加編碼與工程編碼同樣tomcat

<ConnectorURIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

另外一種是對參數從新編碼: String userName = new String(request.getParamter("userName").getBytes("ISO8859-1"),"utf-8")安全

ISO8859-1是tomcat默認編碼,須要將tomcat編碼後的內容按utf-8編碼。restful

SpringMVC的異常處理?

能夠將異常拋給Spring框架,有Spring處理,咱們只須要配置簡單的異常處理器,在異常處理器中添加視圖頁面便可。

SpringMVC經常使用的註解有那些?

@RequestMapping:用於處理請求 url 映射的註解,可用於類或方法上。用於類上,則表示類中的全部響應請求的方法都是以該地址做爲父路徑。

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

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

SpringMvc的控制器是否是單例模式,若是是,有什麼問題,怎麼解決

是單例模式,因此在多線程訪問的時候存在線程安全的問題。

若是在攔截請求中,我想攔截get方式提交的方法怎麼配置?

能夠在@RequestMapping註解裏面加上method=RequestMethod.GET

怎樣在方法裏面獲得request,或者session?

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

如何在攔截的方法裏面獲得前臺傳入的參數?

在形參裏面聲明這個參數,名字和傳過來的參數必須同樣

若是前臺有不少個參數傳入,而且這些參數都是一個對象的,那麼怎麼樣快速獲得這個對象?

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

SpingMVC中函數的返回值是什麼?

返回值能夠有不少類型,有String, ModelAndView。ModelAndView類把視圖和數據都合併的一塊兒的,但通常用String比較好

SpringMVC用什麼對象從後臺向前臺傳遞參數的?

用modelmap對象,能夠在這個對象裏面調用put方法,把對象加到裏面,前臺就能夠經過el表達式拿到。

怎麼樣把ModelMap裏面的數據放入Session裏面?

能夠在類加註解@SessionAttributes,裏面包含的字符串要放入session裏面的key

如何在spring mvc實現RESTful 服務

1.導入jackson2包

2,開啓註解驅動mvc:annotation-driven/

SpringMvc中有個類把視圖和數據都合併的一塊兒的,叫什麼?

ModelAndView

SpringMvc裏面攔截器是怎麼寫的

有兩種寫法,一種是實現HandlerInterceptor接口,另一種是繼承適配器類,,接着在接口方法當中,實現處理邏輯;而後在SpringMvc的配置文件中配置攔截器便可:

<!-- 攔截器的配置 -->
	<mvc:interceptors>
		<mvc:interceptor>
			<!-- ** 表示當前目錄及其子目錄路徑 -->
			<mvc:mapping path="/**"/>
			<bean class="com.dpb.interceptor.FirstIntercepter"></bean>
		</mvc:interceptor>
	</mvc:interceptors>

介紹SpringMVC restful風格:

RESTful是一種架構的規範與約束、原則,符合這種規範的架構就是RESTful架構 在RESTful接口中,全部的方法都是返回JSON,沒有返回頁面的(ModelAndView),所以,全部的方法上都須要添加@ResponseBody註解。一個替代的簡化方案,是使用 @RestController 代替@Controller。@RestController其實是一個組合註解,是@Controller和@ResponseBody的組合

相關文章
相關標籤/搜索