最近用SpringMVC+Freemarker+AJAX作了个例子.遇到了一些关于中文编码的问题.通过查资料把问题解决了.
在这里总结一下.
先解决Freemarker的中文问题.
在Spring的配置文件里要添加一些配置项.
在Spring的配置文件中像如上配置之后Freemarker的中文问题基本解决.
下面是SpringMVC的中文问题解决.
首先要添加一个HandlerInterceptor的实现类
再在Spring的配置文件里配置这个类
这样SpringMVC的中文问题就也解决了.
在这里总结一下.
先解决Freemarker的中文问题.
在Spring的配置文件里要添加一些配置项.
- <bean id="freemarderConfig"
- class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
- <property name="templateLoaderPath" value="/ftl/"/>
- <property name="freemarkerVariables">
- <map>
- <entry key="xml_escape" value-ref="fmXmlEscape"/>
- </map>
- </property>
- <property name="freemarkerSettings">
- <props>
- <prop key="defaultEncoding">UTF-8</prop>
- </props>
- </property>
- </bean>
- <bean id="fmXmlEscape" class="freemarker.template.utility.XmlEscape"/>
- <bean id="viewResolver"
- class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
- <property name="cache" value="true"/>
- <property name="viewClass"
- value="org.springframework.web.servlet.view.freemarker.FreeMarkerView"/>
- <property name="suffix" value=".ftl"/>
- <property name="exposeRequestAttributes" value="true"/>
- <property name="exposeSessionAttributes" value="true"/>
- <property name="exposeSpringMacroHelpers" value="true"/>
- <property name="contentType" value="text/html;charset=UTF-8"/>
- </bean>
下面是SpringMVC的中文问题解决.
首先要添加一个HandlerInterceptor的实现类
- import org.springframework.web.servlet.HandlerInterceptor;
- import org.springframework.web.servlet.ModelAndView;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- /**
- * Created by IntelliJ IDEA.
- * User:
- * Date: 2008-10-6
- * Time: 11:50:36
- * To change this template use File | Settings | File Templates.
- */
- public class RequestEncodingInterceptor implements HandlerInterceptor
- {
- public boolean preHandle(HttpServletRequest request,
- HttpServletResponse response, Object handler) throws Exception
- {
- request.setCharacterEncoding("utf-8");
- return true;
- }
- public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
- //To change body of implemented methods use File | Settings | File Templates.
- }
- public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
- //To change body of implemented methods use File | Settings | File Templates.
- }
- }
- <bean id="loginUrlMapping"
- class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
- <property name="interceptors">
- <list>
- <bean class="net.dvqi.interceptors.RequestEncodingInterceptor"/>
- </list>
- </property>
- <property name="urlPathHelper">
- <bean class="org.springframework.web.util.UrlPathHelper">
- <property name="urlDecode" value="true"/>
- <property name="defaultEncoding" value="utf-8"/>
- </bean>
- </property>
- <property name="mappings">
- <props>
- <prop key="/index.html">indexController</prop>
- <prop key="/test.html">testController</prop>
- <prop key="/register.html">registerController</prop>
- <prop key="/system/user/userlist.html">userListController</prop>
- </props>
- </property>
- </bean>