SpringMvc 學習 (三) 三大組件的配置

這裏寫圖片描述

先來看一下這張圖其中,前端控制器一上來就配過了,丟一邊
然後,視圖還有處理器這都是要程序員自己寫的,也丟一邊
於是就剩下來這三個:
處理器映射器,處理器適配器,視圖解析器

其實呢,我們沒有做任何配置,就可以使用這些組件,因爲框架已經默認加載這些組件了,但是發現其中默認映射器,適配器Spring官方已不推薦使用(可以去默認映射,適配器的源碼裏面翻),但是你繼續用也沒事,所以配不配隨你,反正用起來沒差別

# Default implementation classes for DispatcherServlet's strategy interfaces.
# Used as fallback when no matching beans are found in the DispatcherServlet context.
# Not meant to be customized by application developers.
org.springframework.web.servlet.LocaleResolver=org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver
org.springframework.web.servlet.ThemeResolver=org.springframework.web.servlet.theme.FixedThemeResolver
org.springframework.web.servlet.HandlerMapping=org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,\
    org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping
org.springframework.web.servlet.HandlerAdapter=org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter,\
    org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter,\
    org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter
org.springframework.web.servlet.HandlerExceptionResolver=org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerExceptionResolver,\
    org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver,\
    org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver
org.springframework.web.servlet.RequestToViewNameTranslator=org.springframework.web.servlet.view.DefaultRequestToViewNameTranslator
org.springframework.web.servlet.ViewResolver=org.springframework.web.servlet.view.InternalResourceViewResolver
org.springframework.web.servlet.FlashMapManager=org.springframework.web.servlet.support.SessionFlashMapManager

配置處理器映射器

註解式處理器映射器,對類中標記了@ResquestMapping的方法進行映射。根據@ResquestMapping定義的url匹配@ResquestMapping標記的方法,匹配成功返回HandlerMethod對象給前端控制器。
HandlerMethod對象中封裝url對應的方法Method。
從spring3.1版本開始,廢除了DefaultAnnotationHandlerMapping的使用,推薦使用RequestMappingHandlerMapping完成註解式處理器映射。
在springmvc.xml配置文件中配置如下:

<!-- 配置處理器映射器 -->
<bean
    class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />

註解描述:
@RequestMapping:定義請求url到處理器功能方法的映射

配置處理器適配器

註解式處理器適配器,對標記@ResquestMapping的方法進行適配。
從spring3.1版本開始,廢除了AnnotationMethodHandlerAdapter的使用,推薦使用RequestMappingHandlerAdapter完成註解式處理器適配。
在springmvc.xml配置文件中配置如下:

<!-- 配置處理器適配器 -->
<bean
    class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" />

註解驅動(嫌上面配置麻煩的用這個)

直接配置處理器映射器和處理器適配器比較麻煩,可以使用註解驅動來加載。
SpringMVC使用自動加載RequestMappingHandlerMapping和RequestMappingHandlerAdapter
可以在springmvc.xml配置文件中使用替代註解處理器和適配器的配置。

<!-- 註解驅動 -->
<mvc:annotation-driven />

視圖解析器

視圖解析器使用SpringMVC框架默認的InternalResourceViewResolver,這個視圖解析器支持JSP視圖解析 (簡單來說就是在寫處理器時,轉發頁面不用寫全路徑,寫個jsp頁面的名字就行了)

    @RequestMapping(value="/itemList.action")
    public ModelAndView itemList ()
    {
        List <Items> list = new ArrayList <Items> () ;
        //從mysql中取數據
        list = itemService.selectItemList() ;

        ModelAndView mav = new ModelAndView () ;
        if ( list != null )
        mav.addObject("itemList" ,list) ;
        **mav.setViewName("itemList");//jsp名字**

        return mav ;
    }

回正題
在springmvc.xml配置文件中配置如下:

  <!-- Example: prefix="/WEB-INF/jsp/", suffix=".jsp", viewname="test" ->
       "/WEB-INF/jsp/test.jsp" -->
    <!-- 配置視圖解析器 -->
    <bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
       <!-- 配置邏輯視圖的前綴 -->
       <property name="prefix" value="/WEB-INF/jsp/" />
       <!-- 配置邏輯視圖的後綴 -->
       <property name="suffix" value=".jsp" />
    </bean>

邏輯視圖名需要在controller中返回ModelAndView指定,比如邏輯視圖名爲ItemList,則最終返回的jsp視圖地址:
“WEB-INF/jsp/itemList.jsp”
最終jsp物理地址:前綴+邏輯視圖名+後綴

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
   xmlns:context="http://www.springframework.org/schema/context"
   xmlns:mvc="http://www.springframework.org/schema/mvc"
   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">

   <!-- 註解掃描 -->
   <context:component-scan base-package="com.Google.controller" />

   <!-- 從spring3.1版本開始,廢除了DefaultAnnotationHandlerMapping的使用,
   推薦使用RequestMappingHandlerMapping完成註解式處理器映射 -->
   <!-- 配置處理器映射器  @RequestMapping:定義請求url到處理器功能方法的映射-->
   <!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" /> -->

   <!-- 從spring3.1版本開始,廢除了AnnotationMethodHandlerAdapter的使用,推薦使用RequestMappingHandlerAdapter完成註解式處理器適配。
   在springmvc.xml配置文件中配置如下: -->
   <!-- 配置處理器適配器 -->
   <!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" /> -->

   <!--  直接配置處理器映射器和處理器適配器比較麻煩,可以使用註解驅動來加載。
   SpringMVC使用<mvc:annotation-driven>自動加載RequestMappingHandlerMapping和RequestMappingHandlerAdapter
   可以在springmvc.xml配置文件中使用<mvc:annotation-driven>替代註解處理器和適配器的配置。 -->
   <!-- 註解驅動 -->
   <mvc:annotation-driven />

   <!-- 配置視圖解析器 -->
   <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
      <!-- 配置邏輯視圖的前綴 -->
      <property name="prefix" value="/WEB-INF/jsp/" />
      <!-- 配置邏輯視圖的後綴 -->
      <property name="suffix" value=".jsp" />
   </bean>

</beans>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章