面試SpringMVC小結

1.SpringMVC的工做流程?

 

 

流程 
一、用戶發送請求至前端控制器DispatcherServlet 
二、DispatcherServlet收到請求調用HandlerMapping處理器映射器。 
三、處理器映射器找到具體的處理器,生成處理器對象及處理器攔截器並返回給DispatcherServlet。 
四、DispatcherServlet調用HandlerAdapter處理器適配器 
五、HandlerAdapter通過適配調用具體的處理器(Controller,也叫後端控制器)。 
六、Controller執行完成返回ModelAndView 
七、HandlerAdapter將controller執行結果ModelAndView返回給DispatcherServlet 
八、DispatcherServlet將ModelAndView傳給ViewReslover視圖解析器 
九、ViewReslover解析後返回具體View 
十、DispatcherServlet根據View進行渲染視圖
十一、DispatcherServlet響應用戶

2.POST中文亂碼問題:

在web.xml中加入:前端

 

  1. <filter>
  2.     <filter-name>CharacterEncodingFilter</filter-name>
  3.     <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  4.     <init-param>
  5.         <param-name>encoding</param-name>
  6.         <param-value>utf-8</param-value>
  7.     </init-param>
  8. </filter>
  9. <filter-mapping>
  10.     <filter-name>CharacterEncodingFilter</filter-name>
  11.     <url-pattern>/*</url-pattern>
  12. </filter-mapping>

3.對於get請求中文參數出現亂碼

一種方法對參數進行從新編碼:web

 String userName = new String(request.getParamter("userName").getBytes("ISO8859-1"),"utf-8")spring

 

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

4.講下SpringMvc和Struts1,Struts2的比較的優點

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


5.
SpingMvc中的控制器的註解通常用那個,有沒有別的註解能夠替代

通常用@Conntroller註解,表示是表現層,不能用用別的註解代替.

6. @RequestMapping註解用在類上面有什麼做用

用於類上,表示類中的全部響應請求的方法都是以該地址做爲父路徑。

7. 怎麼樣把某個請求映射到特定的方法上面

直接在方法上面加上註解@RequestMapping,而且在這個註解裏面寫上要攔截的路徑

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

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

9. 若是在攔截請求中,我想攔截提交參數中包含"type=test"字符串,怎麼配置

能夠在@RequestMapping註解裏面加上params="type=test"

10. 我想在攔截的方法裏面獲得從前臺傳入的參數,怎麼獲得

直接在形參裏面聲明這個參數就能夠,但必須名字和傳過來的參數同樣

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

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

12. 怎麼樣在方法裏面獲得Request,或者Session

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

13. SpringMvc中函數的返回值是什麼.

返回值能夠有不少類型,有String, ModelAndView,當通常用String比較好

14. SpringMvc怎麼處理返回值的

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

15. SpringMVC怎麼樣設定重定向和轉發的

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

16. SpringMvc用什麼對象從後臺向前臺傳遞數據的

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

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

叫ModelAndView

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

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

19. SpringMvc怎麼和AJAX相互調用的

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

20. 當一個方法向AJAX返回特殊對象,譬如Object,List等,須要作什麼處理

要加上@ResponseBody註解

21. 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>
 

22.SpringMVC與Struts2的主要區別?

①springmvc的入口是一個servlet即前端控制器DispatcherServlet ,而struts2入口是一個filter過慮器。
②springmvc是基於方法開發,傳遞參數是經過方法形參,能夠設計爲單例或多例(建議單例),struts2是基於類開發,傳遞參數是經過類的屬性,只能設計爲多例。  ③Struts採用值棧存儲請求和響應的數據,經過OGNL存取數據, springmvc經過參數解析器是將request對象內容進行解析成方法形參,將響應數據和頁面封裝成ModelAndView對象,最後又將模型數據經過request對象傳輸到頁面。 Jsp視圖解析器默認使用jstl。
相關文章
相關標籤/搜索