zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    Python的collections之defaultdict的使用及其优势
    Python的collections之namedtuple的使用及其优势
    【转】Python 代码批量抓取免费高清图片!
    Python之Django之views中视图代码重复查询的优化
    【转】把sqlite3数据导入到MySQL中
    【转】项目搬迁,快捷导出环境依赖包到requirements.txt
    聊聊模板方法模式,装饰器模式以及AOP
    [算法]股票问题
    [数据]matplotlib总结
    [算法]谷歌笔试题:Beautiful Numbers
  • 原文地址:https://www.cnblogs.com/zjj1996/p/9100610.html
Copyright © 2011-2022 走看看