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>


原文地址:https://www.cnblogs.com/Zs-book1/p/11323770.html