在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>