zoukankan      html  css  js  c++  java
  • SpringMVC -- 梗概--源码--贰--mvc:annotation-driven

    1>在springMVC的处理流程中,有两个重要组件:HandlerMapping和HandlerAdapter
      分别负责解析Handler和执行Handler
    2>如果配置了<mvc:annotation-driven/>,则在项目中自动注册:
      RequestMappingHandlerMapping
      RequestMappingHanderAdapter
      且如上两个组件是对注解开发最新的最全面的支持
    3>如果没有配置:<mvc:annotation-driven/>
      则默认使用:
      DefaultAnnotationHandlerMapping
      AnnotationMethodHandlerAdapter两个组件
      而如上两组间已经弃用,且其对注解的支持并不全面,
      比如@ResponseBody是不能被解析的。

    XML :
    <?xml version="1.0" encoding="utf-8"?>
    <!-- xmlns:xml name space 是每一个schema唯一标识 -->
    <beans xmlns="http://www.springframework.org/schema/beans" 
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:mvc="http://www.springframework.org/schema/mvc" 
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
           xsi:schemaLocation="http://www.springframework.org/schema/beans
                                  http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
                                  http://www.springframework.org/schema/context
                                  http://www.springframework.org/schema/context/spring-context-3.2.xsd
                                  http://www.springframework.org/schema/mvc
                                  http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">
    
        <!-- 扫描所有控制器中的注解 -->
        <context:component-scan base-package="com.c61.controller"></context:component-scan>
        <!-- 
            MVC中基于注解开发,导入注解驱动
            <mvc:annotation-driven/>
         -->
        <mvc:annotation-driven>
            <mvc:message-converters>
                <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
                    <property name="supportedMediaTypes">
                        <list>
                            <!-- 支持的格式:application/json -->
                            <value>application/json</value>
                        </list>
                    </property>
                </bean>
            </mvc:message-converters>
        </mvc:annotation-driven>
        <!-- 视图解析器:解析视图
             控制器方法的返回值,会被视图解析器捕获。"abc"
             根据捕获的内容,解析出一个视图地址:/abc.jsp
         -->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/"></property>
            <property name="suffix" value=".jsp"></property>
        </bean>
        <!-- 
            静态资源:html,js,css,jpg
            访问404 解决
         -->
         <mvc:default-servlet-handler/>
         
         <!-- 声明异常处理器 -->
         <bean class="com.c61.ex.resolver.MyExceptionResolver"></bean>
         
         <!-- 拦截器配置 -->
         <!-- 
             /a/b
             inter1
             inter2
             拦截顺序:先配置先拦截
             具体顺序:pre1==pre2==contorller==post2==post1==after2==after1
          -->
         <mvc:interceptors>
             <mvc:interceptor>
                 <!-- 定义要拦截的路径 
                      /inter/*  匹配   /inter/a   /inter/b    inter/cssdafasfsafs
                                                      不能匹配/inter/a/b
                     /inter/** 匹配 /inter/a  /inter/xxsjaflsajf   /inter/a/b/c/e/d/xxxcvx
                     *注意:exclude-mapping不能单独使用。要配合mapping使用
                                 :在mapping匹配的范围中排除一些个。
                 -->
                 <mvc:mapping path="/inter/**"/>
                 <mvc:mapping path="/a/b"/>
                 <mvc:mapping path="/c/**"/>
                 <mvc:exclude-mapping path="/inter/test/*"/>
                 <mvc:exclude-mapping path="/c/b/**"/>
                 <!-- 声明拦截器 -->
                 <bean class="com.c61.interceptor.MyInterceptor"/>
             </mvc:interceptor>
             <mvc:interceptor>
                 <!-- 定义要拦截的路径 -->
                 <mvc:mapping path="/inter/test"/>
                 <!-- 声明拦截器 -->
                 <bean class="com.c61.interceptor.MyInterceptor2"/>
             </mvc:interceptor>
         </mvc:interceptors>
         <!-- 声明文件上传解析器 
               注意:此解析器,id必须为:multipartResolver
         -->
         <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
             <!-- 最大允许的上传大小    byte -->
             <property name="MaxUploadSize" value="2097152"></property>
         </bean>
         <!-- 
             注册,验证码生成器
          -->
          <bean id="captcha" class="com.google.code.kaptcha.servlet.KaptchaExtend">
            <constructor-arg>
                <props>  
                    <!-- 是否有边框 边框颜色 边框粗细 -->
                    <prop key="kaptcha.border">no</prop>  
                    <prop key="kaptcha.border.color">105,179,90</prop>  
                    <prop key="kaptcha.border.thickness">20</prop>
                    <prop key="kaptcha.textproducer.font.color">black</prop>  
                    <prop key="kaptcha.image.width">200</prop>  
                    <prop key="kaptcha.image.height">50</prop>  
                    <prop key="kaptcha.textproducer.font.size">40</prop>  
                    <prop key="kaptcha.session.key">code61</prop>  
                    <prop key="kaptcha.textproducer.char.length">4</prop>  
                    <prop key="kaptcha.textproducer.font.names">Arial,Courier</prop> 
                  <!--   <prop key="kaptcha.background.clear.from">black</prop> 
                    <prop key="kaptcha.background.clear.to">255,0,0</prop>  -->
                </props>  
            </constructor-arg>
        </bean>
    </beans>

    啦啦啦

  • 相关阅读:
    2015生命之旅---第三站象山之行
    我的八年程序之路(四)程序路上的新起点
    2015生命之旅---第二站长沙杭州
    2015生命之旅---第一站重庆
    我的八年程序之路(三)为了理想放弃高薪
    锋友分享:国行和非国行iPhone的送修需知
    iPhone被盗后续更新二:被换机!已取机!没扣住新机!怎么找新机呢?事发半年后跟进...
    iPhone被盗后续更新一:怎么找老机
    iPhone被盗后怎么?这篇文章只办针对iOS7后的系统
    四个小诀窍 告诉你雪景怎么拍才能更好看
  • 原文地址:https://www.cnblogs.com/ClassNotFoundException/p/6714496.html
Copyright © 2011-2022 走看看