`
冽豹之姿
  • 浏览: 40453 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Spring MVC与Veclocity结合中文问题及常用中文问题总结(转)

阅读更多
昨天在整合Spring MVC和Velocity,Sitemesh时,又碰到了久违的中文问题。唉,JSP, mysql, struts,每次都会碰到这样的问题,总是以为这种以后不会碰到这种看似初级的问题了,结果还是躲不过。网上没查到相关资料,于是开始动手跟踪Spring和Velocity的源码,弄了一天终于搞定。后来一个同学告诉我这个问题在Spring中文论坛里有精华贴,跟我最后的解决方案一样的,气死我也。不过跟踪Spring的源代码收获还是不错的,现在又对Spring的MVC framework有了更深的认识。这里把以前碰到的中文问题大概列一下,方便以后参考。

1、JSP页面显示的中文问题
这是最初级的东西,网上到处都有,不过还是列一下吧:
Page的第一行改成:<%@ page contentType="text/html; charset=gb2312" %>
Head里加:<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
2、页面Form 内容提交的中文问题
在web.xml里加入:
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<display-name>Character Encoding Filter</display-name>
<description>no description</description>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GB2312</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>

<!-- Encoding Filter Mapping Start-->
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
呵呵,这是个简单得要命的filter,如果不用Spring的话,完全可以自己写一个。其实任何的interceptor机制都可以处理这个的,不管用Webwork还是Spring的interceptor,甚至用AOP,只要在取参数前加那么一句:request.setCharacterEncoding("GB2312");就行了。以前我用struts就是在它的RequestProcessor的populate之前加了这么一行。
3、request 的parameter里要传中文参数的问题
这个问题跟Web Container有关系,记得以前我同学用WebLogic时好象没出现这样的问题。(我一般不传中文参数,呵呵)。
Tomcat里的解决方案是在server.xml里Connector port="8080"的attribute里加URIEncoding="GB2312"
当然还有最土的解决方案,虽然不太会用到,不过还是列出来,以备最无奈的时候使用:
String encodeStr=new String(fieldValue.getBytes("8859_1"), "gb2312");
4、mysql的中文问题
首先要修改mysql配置文件的encoding为GB2312,这部分的操作不记得了,毕竟好久没用mysql了。不过据说新版的mysql里有wizard可以设的。然后把jdbc connection改成如下:
jdbc:mysql://localhost:3306/bsfbookstore?useUnicode=true;characterEncoding=GB2312
另外在写程序成尽量用PrepareStatement,少用Statement,好象jdbc驱动在解析statement里的SQL包含中文时会有问题。(用PrepareStatement也是好习惯, hibernate里全用PrepareStatement的,哈哈)
5、Spring与Veclocity结合的中文问题
第一步:
在"velocityConfig"里配置velocity.propeties文件,加下面一行:
<property name="configLocation"><value>/WEB-INF/velocity.properties</value></property>
呵呵,也可以在config里直接用Map把参数写进去,这样就不用properties文件,这个Spring的文档里都有。
然后在velocity.properties里写:
input.encoding=GB2312
output.encoding=GB2312
default.contentType=text/html; charset=GB2312(ms这一行没有用处,Spring有个地方读进这个参数,不过后来又覆盖掉了)
第二步:
接下来就是我昨天调了半天的那个地方,最后的解决方案很简单,在viewResolver配置里加一行:
<property name="contentType"><value>text/html; charset=GB2312</value></property>
呵呵,就这么一行害我debug了好久,跟踪了Velocity的Context设置,甚至改了Spring的源码,用了Filter,Spring的Handler interceptor来设置reponse的contentType就是没效果,结果发现Spring在Velocity View的render里加了这么一行:
response.setContentType(getContentType());
呵呵,原先设好的contentType都被冲掉了,因为render的时机是在postHandler之后,呵呵。
这个参数对jsp是没有用的,因为jsp会根据自己页面的contentType设定的,所以每个JSP必须设置自己的contentType,Velocity就不用啦。难怪以前用JSP的时候没碰到这个问题。


分享到:
评论

相关推荐

    精通Spring MVC 4

    本书共计10章,分别介绍了快速搭建Spring Web应用、精通MVC结构、URL映射、文件上传与错误处理、创建Restful应用、保护应用、单元测试与验收测试、优化请求、将Web应用部署到云等内容,循序渐进地讲解了Spring MVC4...

    精通Spring MVC 4 中文

    精通Spring MVC 4 中文

    spring mvc 官方文档

    本文详细介绍spring MVC的原理和开发心得体会。

    Spring MVC 学习记录总结1

    Spring MVC 学习记录总结Spring MVC 是目前主流的实现MVC设计模式的框架,是Spring 框架的一个分支产品,以 Spring IoC 容器

    Spring MVC 4.2.4.RELEASE 中文文档v

    Spring MVC 4.2.4.RELEASE 中文文档Spring MVC 4.2.4.RELEASE 中文文档

    Spring mvc整合mybatis例子

    Spring mvc整合mybatis例子

    spring-webmvc-5.3.10-API文档-中文版.zip

    标签:springframework、spring、webmvc、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准...

    Spring MVC+MyBatis开发从入门到项目实战

    第3篇是Spring MVC技术入门,包括Spring MVC的背景介绍、架构整体剖析、环境搭建、处理器与映射器的讲解、前端控制器的源码分析、多种视图解析器的介绍、请求映射与参数绑定的介绍、Validation校验与异常处理和拦截...

    Spring MVC所需jar包

    Spring MVC所需jar包,包含java开发中 Spring MVC架构中最常用的jar包

    Spring MVC 基于注解实例

    Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于...

    spring MVC数据绑定大全

    总结出以下几种情况 希望对刚接触spring mvc 的朋友有所帮助 "&gt;spring MVC数据绑定 含例子 转载自疯芒毕露的专栏 刚开始用spring mvc 做web开发时 经常会不知道如何合适绑定页面数据 用惯struts2的朋友更认为spring ...

    spring mvc源代码

    spring mvc4.1.4 源代码 spring mvc4.1.4 源代码spring mvc4.1.4 源代码spring mvc4.1.4 源代码spring mvc4.1.4 源代码

    [免费]Spring MVC学习指南(高清)

    Spring MVC是Spring框架中用于Web应用快速开发的一个模块,其中的MVC是Model-View-Controller的缩写。作为当今业界最主流的Web开发框架,Spring MVC已经成为当前最热门的开发技能,同时也广泛用于桌面开发领域。 ...

    Spring MVC jar包

    关于构建Sping MVC的Jar包,包括Sping2.5.6和Hibernate3.6.8

    Spring MVC与MYBatis企业应用实战.pdf

    Spring MVC与MYBatis企业应用实战.pdf Spring MVC与MYBatis企业应用实战.pdf

    Mastering Spring MVC 4 中文版.pdf

    详细讲解Spring MVC4的配置和使用,值得好好学习和研究

    spring mvc与mybatis的集成

    spring mvc与mybatis的集成

    Spring MVC 4.2.3

    Spring mvc jar包

Global site tag (gtag.js) - Google Analytics