1、中文乱码解决方案
在表单提交时,如果遇到中文字符会出现乱码现象,Spring提供一个CharacterEncodingFilter过滤器,可以解决乱码问题
CharacterEncodingFilter使用时需要注意以下问题
1)表单数据以post方式提交
2)在web.xml中配置CharacterEncodingFilter过滤器
3)页面编码和过滤器指定的编码保持一致
<!--设置中文乱码处理过滤器,每个filter都有一个init方法-->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<!--设置编码格式-->
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
<filter-mapping>
2、异常处理(在spring.xml中配置)
Spring处理异常方式有以下三种
1)使用Spring提供的简单异常处理器
SimpleMappingExceptionResolver:只需要在Spring的配置文件中定义异常处理器即可
2)实现HandlerExceptionResolver接口(自定义异常处理器)
自定义异常处理器需要在Spring的配置文件中定义才可以使用,适合全局处理有“处理过程”的异常
3)使用@ExceptionHandler注解实现异常处理
适合局部处理有“处理过程”的异常
<!--简单异常处理器-->
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<prop key="java.lang.Exception">jsp/error</prop>
</props>
</property>
</bean>
<!--自定义简单异常处理器-->
<bean class="com.exception.MyExceptionResolver"/>
3、拦截器
1)拦截器接口
拦截器必须实现HandlerInterception接口
2)preHandle()
处理器执行前调用,方法返回true表示继续调用其他拦截器或处理方法,返回false表示中断流程,不会执行后续的拦截器或处理器
3)postHanle()
处理器方法执行后,视图处理器调用前,此时可以通过ModelAndView对象模型数据进行处理或对视图进行处理
4)afterCompletion()
整个请求处理完毕后调用,如性能监控中可以在此记录结束时间,输出消耗时间,可以进行资源清理
注:拦截器配置(在spring.xml中配置)
<mvc:interceptors>
<mvc:interceptor>
<!--需要通过拦截器的URL-->
<mvc:mapping path=""/>
<!--不需要通过拦截器的URL-->
<mvc:exclude-mapping path=""/>
注意:URL不可以写相对路径,绝对路径是从命名空间开始
<!--拦截器组件-->
<bean class=""/>
</mvc:interceptor>
</mvc:interceptors>
提示:自定义拦截器,实现HandlerInterceptor接口,需要实现定义的全部抽象方法,如果只需要某一个方法可以继承HandlerInterceptorAdapter