自定义视图
1.自定义视图,实现view接口或者继承AbstractView抽象类,并通过@Component加入到IOC容器中。
2.在springmvc配置文件中配置BeanNameViewResolver视图解析器。
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver">
<property name="order" value="100"></property>
</bean> -->
数据格式化标签
1.在SpringMVC配置文件中配置<mvc:annotation-driven/>
2.在目标POJO对象的属性上加上@NumberFormat 或者 @DateTimeFormat 注解
数据类型转换
1. 自定义类型转换器(eg:EmployeeConverter)实现Converter<S,T>接口并加入到SpringMVC的IOC容器中;(使用@Component注解)
2.配置自定义转换器到FormattingConversionServiceFactoryBean工厂中!
<!-- 将ConversionService再作为annotation-driven的一个属性存在! -->
<mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>
<!-- 配置ConversionService -->
<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="converters">
<set>
<ref bean="employeeConverter"/>
</set>
</property>
</bean>
SpringMVC如何处理JSON数据
1.加入json的jar包
2. 编写目标方法,使其返回 JSON 对应的对象或集合
3. 在方法上添加 @ResponseBody 注解
文件上传
1.加入上传文件的jar包
2.在SpringMVC配置文件中配置CommonsMultipartResovler
<!-- 配置CommonsMultipartResolver -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="utf-8"></property>
<!-- 以字节为单位 -->
<property name="maxUploadSize" value="1024000"></property>
</bean>
文件下载
用ResponseEntity<byte[]> 返回值完成文件下载
自定义拦截器:
1.自定义实现类实现 HandlerInterceptor接口
– preHandle():该方法在目标方法之前被调用,
若返回值为true,则继续调用后续的拦截器和目标方法
若返回值为false,则不会再调用后续的拦截器和目标方法
可以考虑做权限,日志或者事务等!
–postHandle():调用目标方法之后,但渲染视图之前被调用
可以对请求域中的属性或者视图做出修改!
–afterCompletion():渲染视图之后被调用,
可以在该方法中进行一些资源清理的操作。
2.在springmvc配置文件中配置相对应的拦截器
<mvc:interceptors>
<!--配置自定义拦截器 ,所有的路径都拦截 -->
<bean class="com.neuedu.springmvc.filter.MyFilter"></bean>
<!-- 关于拦截器的配置问题 ,可以通过<mvc:interceptor>来配置使用哪个拦截器来【不】拦截的路径-->
<mvc:interceptor>
<!-- 用<mvc:mapping>标签指定要拦截的路径 用mvc:exclude-mapping指定不拦截的路径-->
<mvc:mapping path="/employ"/>
<!-- 指定使用哪个拦截器进行拦截 -->
<bean class="com.neuedu.springmvc.filter.SecondFilter"></bean>
</mvc:interceptor>
</mvc:interceptors>
SpringMVC的异常处理:
1.加上<mvc:annotation-driven>标签:
2.在当前Handler中定义由@ExceptionHandler注解修饰的方法,用于处理异常信息!
>>>@ExceptionHandler方法修饰的入参中可以加入Exception类型的参数,该参数即对应发生的异常信息
>>>@ExceptionHandler方法的入参中不能传入Map.若希望把异常信息传到页面上,需要使用ModelAndView作为方法的返回值。
3.@ExceptionHandler 注解定义的方法优先级问题:会根据异常的最近继承关系找到继承深度最浅的那个 @ExceptionHandler 注解方法