1. 程式人生 > >SpringMVC常見面試題總結【概念】

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響應使用者

SpringMVC的優點:

與spring框架繼承,支援各種請求資源的對映策略,支援各種檢視技術

SpringMVC的主要元件?

前端控制器DispatcherServlet: 作用:接受請求,響應結果,相當於轉發器 處理器對映器HandlerMapping 作用:跟據請求的·url來查詢Handler 處理器介面卡HandlerAdapter 處理器Handler(需要程式設計師開發) 檢視解析器 ViewResolver(不需要程式設計師開發) 作用:進行檢視的解析,根據檢視邏輯名解析成真正的檢視檢視View(需要程式設計師開發jsp)

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

1.轉發:在返回值前面加“forward” 2.重定向:在返回值前面加:“redirect”

SpringMVC怎麼樣和AJAX相互呼叫的?

通過jackson框架把java裡面的物件直接轉化為js可以識別的json物件,具體步驟: 加入jar包:jackson.jar 在配置檔案中配置json的對映 在接受Ajax方法裡面直接返回list等,但在方法前面加@ResponseBody註解

如何解決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配置檔案新增編碼與工程編碼一樣

<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編碼。

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和@