SpringMVC配置三大組件


1.組件掃描器

使用組件掃描器省去在spring容器配置每個Controller類的繁瑣。

使用<context:component-scan>自動掃描標記@Controller的控制器類,

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

<!-- 配置controller掃描包,多個包之間用,分隔 -->

<context:component-scan base-package="cn.itcast.springmvc.controller" />

1.2 注解映射器和適配器

1.2.1. 配置處理器映射器

       注解式處理器映射器,對類中標記了@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到處理器功能方法的映射

1.2.3. 配置處理器適配器

注解式處理器適配器,對標記@ResquestMapping的方法進行適配。

 

從spring3.1版本開始,廢除了AnnotationMethodHandlerAdapter的使用,推薦使用RequestMappingHandlerAdapter完成注解式處理器適配。

 

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

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

1.2.4. 注解驅動

直接配置處理器映射器和處理器適配器比較麻煩,可以使用注解驅動來加載。

SpringMVC使用<mvc:annotation-driven>自動加載RequestMappingHandlerMapping和RequestMappingHandlerAdapter

可以在springmvc.xml配置文件中使用<mvc:annotation-driven>替代注解處理器和適配器的配置。

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

1.3. 視圖解析器(其實可以不用手動配,但若要配前后綴,就需要先手動配一下視圖解析器)

視圖解析器使用SpringMVC框架默認的InternalResourceViewResolver,這個視圖解析器支持JSP視圖解析

在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物理地址:前綴+邏輯視圖名+后綴

1.3.1. 修改ItemController

修改ItemController中設置視圖的代碼

// @RequestMapping:里面放的是請求的url,和用戶請求的url進行匹配
// action可以寫也可以不寫
@RequestMapping("/itemList.action")
public ModelAndView queryItemList() {
    // 創建頁面需要顯示的商品數據
    List<Item> list = new ArrayList<>();
    list.add(new Item(1, "?????", 2399, new Date(), "????"));
    list.add(new Item(2, "!!!!!!!!", 2399, new Date(), "!!!!!!"));

    // 創建ModelAndView,用來存放數據和視圖
    ModelAndView modelAndView = new ModelAndView();
    // 設置數據到模型中
    modelAndView.addObject("itemList", list);
    // 設置視圖jsp,需要設置視圖的物理地址
    // modelAndView.setViewName("/WEB-INF/jsp/itemList.jsp");
    // 配置好視圖解析器前綴和后綴,這里只需要設置邏輯視圖就可以了。
    // 視圖解析器根據前綴+邏輯視圖名+后綴拼接出來物理路徑
    modelAndView.setViewName("itemList");

    return modelAndView;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM