SpringMVC
javaweb中的过滤器
大家在学习javaweb的时候经常和什么打交道呢?请求与响应,但是每每当我们快乐的敲击键盘时,
页面给出的回应确实该死的乱码,实在令人气愤!
就在在昨天处理SpringMVC练习的时候,发现乱码,
当时会心一笑:
我:小样,哥学过过滤器的想不到吧!
页面:想不到吧老子不吃这一套!
当我设置好请求响应的编码格式和配置好过滤器后心潮澎湃重启tomcat结果=-=,给我来了个熟悉的乱码
不要急,万能的Spring以及给我们准备好的新的过滤器!
通过继续学习课程我迎来了一个全新的过滤器!SpringMVC提供给我们的过滤器,让我们可以只编写配置文件就可以解决编码问题
SpringMVC中的过滤器!!
使用方法和我们的过滤器一样,都是在web.xml中配置,便捷之处就是我们可以不用自己编辑过滤器,SpringMVC都给我们写好了
可以加入直接使用
<filter> <filter-name>encoding</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>encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
唯一的配置区别就是过滤器的class变成了Spring包中的字符编码过滤器,
使用之后就有告别了这万恶的乱码!芜湖!
接下来是json乱码问题!!!我使用的是jackson和阿里的fastjson
json中出现乱码,因为编码问题的原因,我们在mvc下传递json就会出现中文是??的状况,这个问题呢我学到两种解决方案
第一种是相对原生态一点的
在我们的映射注解 @RequestMapping("/t1")中有个功能叫produces
我们可以通过设置这个produces的属性来做到json的字符编码设置
第二种是用SpringMVC配置文件中来完成
这个相对上一个方法来说,一劳永逸,只需要配置一次,这个项目都不需要在去配置,一般用到json我建议就把这段配置放到Spring的配置文件中
<mvc:annotation-driven> <mvc:message-converters register-defaults="true"> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <constructor-arg value="utf-8"></constructor-arg> </bean> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="objectMapper"> <bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean"> <property name="failOnEmptyBeans" value="false"/> </bean> </property> </bean> </mvc:message-converters> </mvc:annotation-driven>