在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 {@InitBinderpublic 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> {@Overridepublic 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>