StringHttpMessageConverter编码的问题

 项目在运行某一个模块的时候,浏览器输出提示信息,如下图片所示

            encoding
控制台打印的[DEBUG]信息如下:

debug]
 StringHttpMessageConverter默认使用的是ISO-8859-1的格式,修改方式如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<bean
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
<value>text/plain;charset=UTF-8</value>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes" value="text/html;charset=UTF-8"/>
</bean>
</list>
</property>
</bean>

此外,上述代码要写在<mvc:annotation-driven>之前,因为它会在启动时自动注册RequestMappingHandlerAdapter。

关于项目控制台无法输出调试信息

 今天运行项目的时候发现server控制台下无法输出[DEBUG]级别的信息,导致无法看到sql语句的详细输出。

 一开始怀疑是导入了第三方的jar包然后覆盖了在web.xml中配置的 log4j.properties文件,但搜索了一遍发现并没有其他的同类型文件。

 然后再网上找答案的过程中发现可能是idea本身的问题,对配置文件的信息进行了缓存。在之前,我删除了配置文件,然后运行项目,控制台依然输出同样的信息,也可能不对,因为输出格式是yyyy-MM-dd INFO ,我怀疑这可能是除了log4j之外其他的打印信息(谁知道。。)。

 在对idea进行清除缓存之后,log4j调试信息运行正常。

 清除缓存步骤:File->Invalidate Caches/Restart

 同时要在web.xml中配置log4j的监听器,注意要在spring的监听器之前配置

1
2
3
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>