• springmvc处理静态资源以及日期格式数据


    在springmvc中,一般都将请求交给控制器处理,但是一些静态资源,如:js文件,css文件,jpg文件等,这些是不需要控制器处理的,因此需要配置静态资源,有三种配置方式:

    1.在web.xml中配置tomcat的默认servlet处理器:

    <servlet-mapping>
            <servlet-name>default</servlet-name>
            <url-pattern>*.jpg</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
            <servlet-name>default</servlet-name>
            <url-pattern>*.js</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
            <servlet-name>default</servlet-name>
            <url-pattern>*.css</url-pattern>
        </servlet-mapping>

    2.在springmvc配置文件中,配置静态资源路径:

    <!--static为静态资源的路径-->
        <mvc:resources mapping="/static/**" location="/static/"/>

    3.使用defaultServletHandler默认静态资源放行

    <mvc:default-servlet-handler/>

    日期格式转换:

    在练习中,如果前端表单数据中有Date格式的数据时

    <input type="date" name="hiredate">

    传递到后台的数据默认是字符串格式的,如果使用实体接收,实体中的字段属性为Date类型,就会报400的错误,因为spring-mvc不能自动将string格式数据转为date类型,因此需要我们转换数据格式,转换数据格式有三种类型:

    1.使用注解的方式:

    使用上面的注解可以在后台将字符串数据转为Date类型的,但是如果要展示数据,后台传递过来的数据格式为日期类型的,如果想要转成常见的yyyy-MM-dd类型,需要再转换:

    2.创建一个BaseController,使用@InitBinder注解;controller需要继承BaseController

    public class BaseController {
        @InitBinder
        public void init(WebDataBinder binder) {
            SimpleDateFormat smf = new SimpleDateFormat("yyyy-MM-dd");
    
            //严格转换,不会进行日期的增减处理
            smf.setLenient(false);
            //注册一个类型转换器
            binder.registerCustomEditor(Date.class, new CustomDateEditor(smf, true));
        }
    }

    3.定义一个全局类型转化器,实现Converter接口:

    public class DateConverter implements Converter<String,Date> {
    
        @Override
        public Date convert(String source) {
            SimpleDateFormat smf = new SimpleDateFormat("yyyy-MM-dd");
            //严格转换
            smf.setLenient(false);
    
            try {
                Date date = smf.parse(source);
                return date;
            } catch (ParseException e) {
                e.printStackTrace();
            }
            return new Date();
        }
    }

    注册该转换器:

    <!--spring-mvc简易配置-->
    <mvc:annotation-driven conversion-service="conversionService">
        
    <!--配置转换器--> <mvc:message-converters> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="objectMapper"> <bean class="com.fasterxml.jackson.databind.ObjectMapper"> <property name="dateFormat"> <bean class="java.text.SimpleDateFormat"> <constructor-arg type="java.lang.String" value="yyyy-MM-dd"/>        </bean>      </property> </bean> </property> </bean> </mvc:message-converters>
    </mvc:annotation-driven>
    <!--配置日期转换器--> 
    <bean class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
      <property name="converters" >
        <set>
          <bean class="com.zs.controller.DateConverter"/>
        </set>
      </property>
    </bean>


  • 相关阅读:
    selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH.
    漫说996icu黑名单
    python datetime object 去除毫秒(microsecond)
    webpack4 系列教程(十四):Clean Plugin and Watch Mode
    webpack4 系列教程(十三):自动生成HTML文件
    webpack4 系列教程(十二):处理第三方JavaScript库
    webpack4 系列教程(十一):字体文件处理
    第一次遭遇云服务器完全崩溃
    music-api-next:一款支持网易、xiami和QQ音乐的JS爬虫库
    MathJax: 让前端支持数学公式
  • 原文地址:https://www.cnblogs.com/Zs-book1/p/11323770.html
Copyright © 2020-2023  润新知