欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Spring MVC與Veclocity結合中文問(wèn)題及常用中文問(wèn)題總結

Spring MVC與Veclocity結合中文問(wèn)題及常用中文問(wèn)題總結

發(fā)表人:xiecc | 發(fā)表時(shí)間: 2005年七月08日, 17:35

昨天在整合Spring MVC和Velocity,Sitemesh時(shí),又碰到了久違的中文問(wèn)題。唉,JSP, mysql, struts,每次都會(huì )碰到這樣的問(wèn)題,總是以為這種以后不會(huì )碰到這種看似初級的問(wèn)題了,結果還是躲不過(guò)。網(wǎng)上沒(méi)查到相關(guān)資料,于是開(kāi)始動(dòng)手跟蹤Spring和Velocity的源碼,弄了一天終于搞定。后來(lái)一個(gè)同學(xué)告訴我這個(gè)問(wèn)題在Spring中文論壇里有精華貼,跟我最后的解決方案一樣的,氣死我也。不過(guò)跟蹤Spring的源代碼收獲還是不錯的,現在又對Spring的MVC framework有了更深的認識。這里把以前碰到的中文問(wèn)題大概列一下,方便以后參考。

1、JSP頁(yè)面顯示的中文問(wèn)題
這是最初級的東西,網(wǎng)上到處都有,不過(guò)還是列一下吧:
Page的第一行改成:<%@ page contentType="text/html; charset=gb2312" %>
Head里加:<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
2、頁(yè)面Form 內容提交的中文問(wèn)題
在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>
呵呵,這是個(gè)簡(jiǎn)單得要命的filter,如果不用Spring的話(huà),完全可以自己寫(xiě)一個(gè)。其實(shí)任何的interceptor機制都可以處理這個(gè)的,不管用Webwork還是Spring的interceptor,甚至用AOP,只要在取參數前加那么一句:request.setCharacterEncoding("GB2312");就行了。以前我用struts就是在它的RequestProcessor的populate之前加了這么一行。
3、request 的parameter里要傳中文參數的問(wèn)題
這個(gè)問(wèn)題跟Web Container有關(guān)系,記得以前我同學(xué)用WebLogic時(shí)好象沒(méi)出現這樣的問(wèn)題。(我一般不傳中文參數,呵呵)。
Tomcat里的解決方案是在server.xml里Connector port="8080"的attribute里加URIEncoding="GB2312"
當然還有最土的解決方案,雖然不太會(huì )用到,不過(guò)還是列出來(lái),以備最無(wú)奈的時(shí)候使用:
String encodeStr=new String(fieldValue.getBytes("8859_1"), "gb2312");
4、mysql的中文問(wèn)題
首先要修改mysql配置文件的encoding為GB2312,這部分的操作不記得了,畢竟好久沒(méi)用mysql了。不過(guò)據說(shuō)新版的mysql里有wizard可以設的。然后把jdbc connection改成如下:
jdbc:mysql://localhost:3306/bsfbookstore?useUnicode=true;characterEncoding=GB2312
另外在寫(xiě)程序成盡量用PrepareStatement,少用Statement,好象jdbc驅動(dòng)在解析statement里的SQL包含中文時(shí)會(huì )有問(wèn)題。(用PrepareStatement也是好習慣, hibernate里全用PrepareStatement的,哈哈)
5、Spring與Veclocity結合的中文問(wèn)題
第一步:
在"velocityConfig"里配置velocity.propeties文件,加下面一行:
<property name="configLocation"><value>/WEB-INF/velocity.properties</value></property>
呵呵,也可以在config里直接用Map把參數寫(xiě)進(jìn)去,這樣就不用properties文件,這個(gè)Spring的文檔里都有。
然后在velocity.properties里寫(xiě):
input.encoding=GB2312
output.encoding=GB2312
default.contentType=text/html; charset=GB2312(ms這一行沒(méi)有用處,Spring有個(gè)地方讀進(jìn)這個(gè)參數,不過(guò)后來(lái)又覆蓋掉了)
第二步:
接下來(lái)就是我昨天調了半天的那個(gè)地方,最后的解決方案很簡(jiǎn)單,在viewResolver配置里加一行:
<property name="contentType"><value>text/html; charset=GB2312</value></property>
呵呵,就這么一行害我debug了好久,跟蹤了Velocity的Context設置,甚至改了Spring的源碼,用了Filter,Spring的Handler interceptor來(lái)設置reponse的contentType就是沒(méi)效果,結果發(fā)現Spring在Velocity View的render里加了這么一行:
response.setContentType(getContentType());
呵呵,原先設好的contentType都被沖掉了,因為render的時(shí)機是在postHandler之后,呵呵。
這個(gè)參數對jsp是沒(méi)有用的,因為jsp會(huì )根據自己頁(yè)面的contentType設定的,所以每個(gè)JSP必須設置自己的contentType,Velocity就不用啦。難怪以前用JSP的時(shí)候沒(méi)碰到這個(gè)問(wèn)題。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Struts2.1.6+Spring2.5+Hibernate3.2
Spring Security3的使用方法有4種
Spring MVC 入門(mén)
Joan's javaworld - Struts2+Spring2.5+Hibernat...
Spring MVC 能夠直接訪(fǎng)問(wèn)jsp頁(yè)面
struts2整合spring應用實(shí)例
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久