`
liyixing1
  • 浏览: 957312 次
  • 性别: Icon_minigender_1
  • 来自: 江西上饶
社区版块
存档分类
最新评论

springmvc + freemarker 乱码

阅读更多
症状
使用freemarker 作为视图,输出中文就乱码

首先想到的是在视图的bean和config都设置为utf-8。
设置如下面的代码1。但是发现还是乱码。于是跟踪请求。在任何一个有接受request和response的地方,设置断点。


然后在变量如上图,那右击,Watch菜单,它会开一个表达式窗口Expressions。如图



在Expressions右击,添加获取请求字符集和回应字符集的表达式
request.getCharacterEncoding()
response.getCharacterEncoding()

当断点进入后发现request和response的字符集都是iso的。这是因为我使用的servlet-api.jar是使用tomcat里面的架包,它默认的架包是iso。因此我需要添加一个字符集的过滤器。

在网上查找,发现spring 已经提供了一个过滤器了。配置如代码2。
其中
encoding设置编码
forceEncoding,如果要设置response的字符集,一定需要添加这个参数,设置为true,否则,它不会对response设置字符集。由于我这里的response和request都是ISO,要设置两个的字符集。所以设置了这个属性



代码1:

<!-- 将ftl后缀的文件使用freemarker 摸版引擎解析 -->
<bean id="freemarkerViewResolver"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="prefix" value="" />
<property name="suffix" value=".ftl" />
<property name="contentType" value="text/html; charset=UTF-8" />
<property name="exposeRequestAttributes" value="false" />
<property name="exposeSessionAttributes" value="false" />
<property name="exposeSpringMacroHelpers" value="true" />
</bean>

<!-- 设置freemarker 解析参数 -->
<bean id="freemarkerConfig"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath" value="/WEB-INF/view/ftl/" />
<property name="freemarkerSettings">
<props>
<prop key="template_update_delay">1</prop>
<prop key="defaultEncoding">UTF-8</prop>
<prop key="url_escaping_charset">UTF-8</prop>
<prop key="locale">zh_CN</prop>
<prop key="boolean_format">true,false</prop>
<prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop>
<prop key="date_format">yyyy-MM-dd</prop>
<prop key="time_format">HH:mm:ss</prop>
<prop key="number_format">0.######</prop>
<prop key="whitespace_stripping">true</prop>
</props>
</property>
</bean>

代码2:
<filter>
<filter-name>setCharacter</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>

<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>setCharacter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
  • 大小: 2.9 KB
  • 大小: 7.9 KB
分享到:
评论

相关推荐

    springmvc+mybatis面试题

    8. ViewResolver解析出具体视图,如JSP、Freemarker等。 9. DispatcherServlet根据解析的视图进行渲染,将模型数据填充到视图中。 10. 最后,DispatcherServlet响应用户请求。 【POST请求中文乱码处理】 POST请求...

    SpringMVC+Jquery实现Ajax功能

    【SpringMVC与jQuery实现Ajax功能详解】 Ajax(Asynchronous JavaScript ...在实际开发中,还可以结合其他技术和最佳实践,如Thymeleaf或FreeMarker作为视图技术,以及使用Ajax进行分页、搜索、表单验证等多种功能。

    javapms门户管理系统 v1.4 beta

    JAVAPMS是JAVA门户管理系统(JAVA Portal Management System)的简称,以SpringMVC+Spring+Hibernate+Freemarker+Html5+jQuery为技术核心架构,面向广大站长、软件开发者、程序爱好者、网页设计师,适用于个人站长、...

    SpringMVC学习笔记+学习源码.zip

    13. **视图技术**:SpringMVC支持多种视图技术,如JSP、FreeMarker、Thymeleaf等,允许开发者根据项目需求选择合适的方式展示结果。 14. **MVC注解驱动**:通过启用`@EnableWebMvc`或在配置文件中设置`...

    springmvc笔记

    - 字符编码问题:为避免乱码,可以设置过滤器`CharacterEncodingFilter`,确保请求和响应使用统一的字符编码。 4. **Controller到View的参数传递**: - Controller中处理业务逻辑后,通过ModelAndView对象或者...

    SpringMVC面试题.pdf

    - 支持多种视图技术,不仅限于JSP,还可以使用FreeMarker、Thymeleaf等。 - 与Spring框架紧密集成,可以利用IoC容器和AOP特性。 - 角色分工明确,降低了组件间的耦合。 - 提供灵活的请求资源映射策略。 3. **...

    springMVC jar包(包含java上传下载所需jar包)

    在这个"springMVC jar 包(包含java上传下载所需jar包)"中,你将找到一组完整的库,用于构建高效、灵活的 Web 应用程序。这个压缩包不仅包括了 Spring MVC 的核心库,还包含了支持文件上传和下载功能所需的依赖。 ...

    JAVA框架面试题汇总[归类].pdf

    - SpringMVC不局限于使用JSP作为视图技术,它可以支持多种视图技术,如FreeMarker、Thymeleaf或者直接返回JSON数据。 4. **请求资源映射策略**: - SpringMVC支持多种请求资源映射策略,可以灵活地配置URL与...

    springMVC比较常见的配置以API

    视图解析器根据返回的逻辑视图名解析出实际的视图,如JSP或Freemarker模板。模型AndView对象用于封装模型数据和视图信息。拦截器则可以对请求进行预处理和后处理,比如权限验证、日志记录等。 总之,Spring MVC提供...

    SpringMVC面试题(2024最新版).docx

    1. **视图技术的多样性**:它支持JSP、FreeMarker、Thymeleaf等多种视图技术,让开发者可以根据项目需求灵活选择。 2. **与Spring生态的紧密集成**:Spring MVC可以无缝地利用Spring的IoC容器和AOP特性,实现依赖...

    Spring MVC面试宝典1.pdf

    - **支持多种视图技术**:SpringMVC不仅支持JSP,还支持其他视图技术如FreeMarker、Thymeleaf等,提供了更多的选择。 - **与Spring框架的深度集成**:SpringMVC作为Spring框架的一部分,可以无缝地与其他Spring功能...

    spring mvc 入门介绍

    - 使用 InternalResourceViewResolver 或者 Thymeleaf、Freemarker 等模板引擎配置视图解析器。 - 规定视图名称到实际视图资源的映射规则。 **6. 显示登录结果** - 根据控制器返回的视图名称,DispatcherServlet...

Global site tag (gtag.js) - Google Analytics