• springmvc 配置文件经验


    来自: https://blog.csdn.net/menghuanzhiming/article/details/77980473

    1. context:component-scan参考地址:http://blog.csdn.net/menghuanzhiming/article/details/77979986 
    2. context:component-scan替代context:annotation-config,参考地址:http://mushiqianmeng.blog.51cto.com/3970029/723880/ 
    3. 处理器映射器、处理器适配器、异常处理和mvc:annotation-driven标签的关系,mvc:annotation-driven标签默认的注册了映射器、适配器、异常处理器,最好不使用mvc:annotation-driven,而是显示的手动配置, 
    参考地址:http://www.cnblogs.com/yangzhilong/p/3725849.html; 
    (1)映射器、适配器、异常处理等都可以配置多个但是匹配时都是由上到下依次匹配执行; 
    (2)同一个映射器在配置文件中配置了两次,springmvc会使用第一次生成的映射器; 
    (3)映射器会自动调用与之匹配成对的适配器; 
    (4)不同的适配器向拦截器传的参数不同,拦截器获取方法的方式不同,参考地址:http://chenzhou123520.iteye.com/blog/1702563,建议不要使用AnnotationMethodHandlerAdapter适配器,使用RequestMappingHandlerAdapter; 
    (5)适配器中配置的属性messageConverters,接收参数和返回参数,可以通过配置编码解决中文乱码问题,参考地址:http://blog.csdn.net/a67474506/article/details/46364159 
    (6)springmvc全局数据校验和局部数据校验的配置方式: 
    注意:本质其实就是将校验器绑定到处理器适配器上; 
    参考地址:http://blog.csdn.net/menghuanzhiming/article/details/78059876

    4. 视图解析器;

    5. 配置静态资源springmvc不进行拦截,代码如下: 
    只有当springmvc配置完全拦截时才需要配置,静态资源不拦截;

    方式1:

    <!--location:文件实际路径。 mapping:请求的URL格式 -->
    <mvc:resources location="/WEB-INF/js/" mapping="/js/**" />
    <mvc:resources location="/WEB-INF/css/" mapping="/css/**" />

    方式2:使用默认的servlet处理, 
    参考地址:http://www.cnblogs.com/fangqi/archive/2012/10/28/2743108.html

    <mvc:default-servlet-handler />

    6. 定时任务注解task:annotation-driven的使用,参考地址: 
    http://blog.csdn.net/medivhq/article/details/50945311

    <!-- task定时任务扫描注解@Scheduled -->
    <task:annotation-driven/>

    配置如下:

    <?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" xmlns:task="http://www.springframework.org/schema/task"
        xsi:schemaLocation="http://www.springframework.org/schema/beans    
                                http://www.springframework.org/schema/beans/spring-beans-3.1.xsd    
                                http://www.springframework.org/schema/context    
                                http://www.springframework.org/schema/context/spring-context-3.1.xsd 
                                http://www.springframework.org/schema/task
                                http://www.springframework.org/schema/task/spring-task-3.1.xsd   
                                http://www.springframework.org/schema/mvc    
                                http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
    
        <!-- 配置一个编码bean,用于统一字符集 -->
        <bean id="utf8Charset" class="java.nio.charset.Charset" factory-method="forName">
            <constructor-arg value="UTF-8"/>
        </bean>
    
        <!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 -->
        <context:component-scan base-package="edu.hrbeu.platform.modeling" use-default-filters="false">
            <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />
            <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service" />
        </context:component-scan>
    
        <!-- 处理器映射器,启动项目时开始进行映射  -->
        <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
        <!-- 处理器适配器,执行拦截器和后端控制器,并配置相应的数据转换类和数据校验类 -->
        <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
            <!--类型转换  -->
            <property name="messageConverters">  
                <list>  
                    <ref bean="string_hmc" /> 
                    <ref bean="byteArray_hmc" />  
                    <ref bean="resource_hmc" />  
                    <ref bean="source_hmc" />  
                    <ref bean="xmlAwareForm_hmc" />  
                    <ref bean="jaxb2RootElement_hmc" />  
                    <ref bean="jackson_hmc" />  
                </list>
            </property>
            <!-- 数据校验 -->
            <property name="webBindingInitializer" ref="webBindingInitializer"></property>
        </bean>
        <!-- 数据转换 -->
        <bean id="string_hmc" class="org.springframework.http.converter.StringHttpMessageConverter"><!-- 处理字符串.. -->
            <constructor-arg ref="utf8Charset"/>
        </bean>
        <bean id="byteArray_hmc" class="org.springframework.http.converter.ByteArrayHttpMessageConverter" /><!-- 处理.. -->
        <bean id="resource_hmc" class="org.springframework.http.converter.ResourceHttpMessageConverter" /><!-- 处理.. -->
        <bean id="source_hmc" class="org.springframework.http.converter.xml.SourceHttpMessageConverter" /><!-- 处理.. -->
        <bean id="xmlAwareForm_hmc" class="org.springframework.http.converter.xml.XmlAwareFormHttpMessageConverter" /><!-- 处理.. -->
        <bean id="jaxb2RootElement_hmc" class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter" /><!-- 处理.. -->
        <bean id="jackson_hmc" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" /><!-- 处理json-->
    
        <!-- 全局数据校验 -->
        <!-- 数据验证 Validator bean -->  
        <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">  
            <!-- 校验器,使用hibernate校验器 -->
            <property name="providerClass" value="org.hibernate.validator.HibernateValidator"/>
           <!--  指定校验使用的资源文件,在文件中配置校验错误信息,如果不指定则默认使用classpath下面的ValidationMessages.properties文件 -->
            <property name="validationMessageSource" ref="messageSource"/>
        </bean>
        <bean id="webBindingInitializer" class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">  
             <property name="validator" ref="validator"/>  
        </bean>
    
        <!-- 全局异常配置 -->
        <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
            <property name="exceptionMappings">
                <props>
                    <prop key="java.lang.Exception">errors/error</prop>
                </props>
            </property>
            <property name="statusCodes">
                <props>
                    <prop key="errors/error">500</prop>
                    <prop key="errors/404">404</prop>
                </props>
            </property>
            <!-- 设置日志输出级别,不定义则默认不输出警告等错误日志信息 -->
            <property name="warnLogCategory" value="WARN"></property>
            <!-- 默认错误页面,当找不到上面mappings中指定的异常对应视图时,使用本默认配置 -->
            <property name="defaultErrorView" value="errors/error"></property>
            <!-- 默认HTTP状态码 -->
            <property name="defaultStatusCode" value="500"></property>
        </bean>
    
        <!-- <mvc:annotation-driven validator="validator">
            <mvc:message-converters>
                 配置responsebody时返回为简单字符串乱码问题 
                <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                    <constructor-arg ref="utf8Charset"/>
                </bean>
            </mvc:message-converters>
        </mvc:annotation-driven> -->
    
        <!-- 视图解析器 -->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 -->
            <property name="prefix" value="/WEB-INF/jsp/" />
            <property name="suffix" value=".jsp" />
        </bean>
    
        <!-- 配置静态资源springmvc不拦截 -->
        <mvc:resources location="/image/" mapping="/image/**"></mvc:resources>
    
        <!-- 配置文件上传 -->
        <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
            <!-- 默认编码 -->
            <property name="defaultEncoding" value="utf-8" />
            <!-- 文件大小最大值 -->
            <property name="maxUploadSize" value="10485760000" />
            <!-- 内存中的最大值 -->
            <property name="maxInMemorySize" value="40960" />
        </bean>
    
        <!-- 装配拦截器 -->
        <mvc:interceptors>
            <!-- 使用bean定义一个Interceptor,直接定义在mvc:interceptors根下面的Interceptor将拦截所有的请求 -->  
            <!-- <bean class="edu.hrbeu.platform.modeling.common.interceptor.LogInterceptor"/>   -->
            <mvc:interceptor>
                <!-- 在springmvc前端控制器DispatcherServlet的基础上缩小拦截范围 -->
                <!-- 一级目录 -->
                <mvc:mapping path="/*.do" />
                <!-- 二级目录 -->
                <!-- <mvc:mapping path="/*/*.do" /> -->
                <!-- 不知道和 /*/*.do有什么区别-->
                <mvc:mapping path="/**/*.do" />
                <!--错误配置样例  -->
                <!-- 
                    拦截失败
                    <mvc:mapping path="*.do" />
                    <mvc:mapping path="/**.do" />
                 -->
                <!-- 需排除拦截的地址 -->    
               <!--  <mvc:exclude-mapping path="/" />  
                <mvc:exclude-mapping path="/test" />   -->
                <!-- 定义在mvc:interceptor下面的表示是对特定的请求才进行拦截的 -->  
                <bean class="edu.hrbeu.platform.modeling.common.interceptor.LogInterceptor"/>  
            </mvc:interceptor>  
        </mvc:interceptors>
    
    </beans>  
  • 相关阅读:
    English,The Da Vinci Code,Chapter 1-3
    Algorithm,Ds,Binary Indexed Trees,树状数组,二分索引树
    Algorithm,Acm,RMQ
    Algorithm,Number Theory,Prime
    Algorithm,Number Theory,GCD
    English,The Da Vinci Code
    Algorithm,LCA,Tarjan,深搜+并查集,最近公共祖先
    python,keyword arguments
    Qt,QObject
    python,build in functions
  • 原文地址:https://www.cnblogs.com/MyKingDragon/p/9488069.html
Copyright © 2020-2023  润新知