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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

配置处理器映射器

注解式处理器映射器,对类中标记了@ResquestMapping的方法进行映射。根据@ResquestMapping定义的url匹配@ResquestMapping标记的方法,匹配成功返回HandlerMethod对象给前端控制器。 
HandlerMethod对象中封装url对应的方法Method。 
从spring3.1版本开始,废除了DefaultAnnotationHandlerMapping的使用,推荐使用RequestMappingHandlerMapping完成注解式处理器映射。 
在springmvc.xml配置文件中配置如下:

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

注解描述: 
@RequestMapping:定义请求url到处理器功能方法的映射

配置处理器适配器

注解式处理器适配器,对标记@ResquestMapping的方法进行适配。 
从spring3.1版本开始,废除了AnnotationMethodHandlerAdapter的使用,推荐使用RequestMappingHandlerAdapter完成注解式处理器适配。 
在springmvc.xml配置文件中配置如下:

<!-- 配置处理器适配器 -->
<bean
    class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" />
  • 1
  • 2
  • 3
  • 4

注解驱动(嫌上面配置麻烦的用这个)

直接配置处理器映射器和处理器适配器比较麻烦,可以使用注解驱动来加载。 
SpringMVC使用自动加载RequestMappingHandlerMapping和RequestMappingHandlerAdapter 
可以在springmvc.xml配置文件中使用替代注解处理器和适配器的配置。

<!-- 注解驱动 -->
<mvc:annotation-driven />
  • 1
  • 2
  • 3

视图解析器

视图解析器使用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 ;
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

回正题 
在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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

逻辑视图名需要在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>
posted @ 2018-05-28 16:00  写代码的地方  阅读(687)  评论(0编辑  收藏  举报