nighty
折騰的年華
posts - 37, comments - 143, trackbacks - 0, articles - 0
導航
BlogJava
首頁
新隨筆
聯系
聚合
管理
<
2011年1月
>
日
一
二
三
四
五
六
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(7)
給我留言
查看公開留言
查看私人留言
隨筆分類
Eclipse(7)
Flex(2)
Java(6)
Struts2(2)
SWT/JFace(1)
信息安全(1)
心得(5)
操作系統(3)
數據庫(3)
服務器部署(5)
測試(2)
系統集成(2)
軟件架構(2)
隨筆檔案
2013年4月 (2)
2013年3月 (1)
2012年4月 (1)
2011年10月 (1)
2011年8月 (1)
2011年5月 (3)
2011年4月 (1)
2011年3月 (2)
2011年2月 (1)
2011年1月 (1)
2010年11月 (1)
2009年11月 (1)
2009年10月 (1)
2009年8月 (1)
2009年7月 (1)
2008年8月 (2)
2008年7月 (2)
2008年6月 (2)
2008年5月 (4)
2008年4月 (1)
2008年1月 (1)
2007年11月 (1)
2007年10月 (2)
2007年8月 (2)
文章分類
測試
搜索
最新評論
1.?re: 關于commons dbutils組件的一個小缺陷分析
dbutils中連傳入到的參數都不區分大小寫??
--starhe
2.?re: B/S,C/S架構混合使用[未登錄]
評論內容較長,點擊標題查看
--eagle
3.?re: B/S,C/S架構混合使用[未登錄]
補充一下:用的語言是java,開發環境是eclipse
--eagle
4.?re: B/S,C/S架構混合使用
評論內容較長,點擊標題查看
--Unbotrusive
5.?re: struts2中重定向中文參數亂碼梳理[未登錄]
有用啊
--tony
閱讀排行榜
1.?ubuntu安裝Java開發環境(38195)
2.?Eclipse3.3安裝中文語言包(13946)
3.?Http狀態碼思維導圖(13768)
4.?B/S,C/S架構混合使用(13767)
5.?添加完整的Eclipse RCP幫助系統(8941)
評論排行榜
1.?B/S,C/S架構混合使用(25)
2.?無奈只能放棄iBatis(24)
3.?Eclipse3.3安裝中文語言包(13)
4.?httpclient3.1使用小結(8)
5.?JDBC連接DB2的一些總結(8)
struts2中重定向中文參數亂碼梳理
Posted on 2011-01-14 16:41
寒武紀
閱讀(6773)
評論(3)
編輯
收藏
所屬分類:
Struts2
在項目中剛好有一個地方需要在服務器端處理一個請求后,重定向到另一個Action,這樣瀏覽器的url才會變成另一個url,用戶重新刷新時,才不會彈出一個對話框問你是不是要重新提交form。于是就自然而然地用了redirectAction。大概如下:
1
<
result
name
="myInfoSuccess"
type
="redirectAction"
>
2
myapp_myInfo.action?msg=${msg}
3
</
result
>
因為重定義會丟失所有的請求參數和值棧,所以這里轉向時,加了一個請求參數msg,msg在要重定向的action中設置。
問題來了,重定向到myapp_myInfo.action時,這個Action里面取出msg參數時變成亂碼!!! 不論中文或是英語還是數字,全是亂碼,折騰了一翻,
URLEncoder
、
URLDEncoder
進行URL Base64編碼和解碼處理,包括new String(msg.getBtye("ISO-8859-1"), "UTF-8")這種處理方式仍無法奏效。google了一下并且抱起書本認真看了看struts2重定向問題后。大概有了個思路。
所有的重定向操作都會丟失所有的請求參數、請求屬性等,當然包括Action的處理結果也會丟失。
首先搞清楚redirect、redirectAction的區別:
1. redirect類型struts2是調用HttpServletResponse的sendRedirect(String)方法來重定向到指定的資源,可以是一個視圖結果,也可以是其它類型的Action;
2. redirectAction同樣是重新生成一個全新的請求。但是struts2內部卻是使用ActionMapperFactory提供的ActionMapper來重定向,它只能跳轉到另外一個Action;
由于redirectAction使用的是ActionMapper來重定向,也就同時使用ActionMapper的編碼方式重新進行編碼,這就導致了后面在取出參數時變成亂碼,沒有具體閱讀它的源代碼,但是多次不同的編碼再想重新還原出來就有點麻煩了。而redirect是使用HttpServletResponse來重定向,就不存在上面的問題。最后改為redirect來重定向,結果如下:
1
<
result
name
="myInfoSuccess"
type
="redirect"
>
2
<
param
name
="location"
>
myapp_myInfo.action?msg=${msg}
</
param
>
3
<
param
name
="encode"
>
true
</
param
>
4
</
result
>
注意:在myapp_myInfo.action對應的Action必須對msg參數做一次轉碼,因為前面的Action過來時就做了URL base64編碼,如果直接發給瀏覽器,就會在瀏覽器看到一串帶%的URL base64編碼字符,所以要加上
1
String msg
=
URLDecoder.decode(getMsg(),
"
UTF-8
"
);
2
setMsg(msg);
把它設置回為中文,瀏覽器才能正常。
還得提到另一個重定向類型chain,它是Action鏈,還能維持當前的值棧不變。不過用它重定向后,雖然跳到其它Action,但是在瀏覽器端的URL是不會變化的,這樣開頭提到的那個問題仍是無法解決的!
剛進場的時候戲就落幕
Feedback
#
re: struts2中重定向中文參數亂碼梳理
回復
更多評論
2011-01-16 12:05 by
最有效的減肥藥
不錯,學習了
#
re: struts2中重定向中文參數亂碼梳理[未登錄]
回復
更多評論
2013-08-30 14:34 by
allen
還是搞不定啊
#
re: struts2中重定向中文參數亂碼梳理[未登錄]
回復
更多評論
2013-10-07 17:49 by
tony
有用啊
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
struts2中重定向中文參數亂碼梳理
Struts2+FreeMarker中利用plainText處理Ajax的一個技巧
Powered by:
BlogJava
Copyright © 寒武紀
主站蜘蛛池模板:
free哆拍拍免费永久视频
|
毛片免费观看网址
|
亚洲视频在线一区
|
18pao国产成视频永久免费
|
亚洲AV成人精品网站在线播放
|
午夜无码A级毛片免费视频
|
水蜜桃亚洲一二三四在线
|
国产精品免费无遮挡无码永久视频
|
免费看一级高潮毛片
|
免费中文字幕一级毛片
|
美女扒开屁股让男人桶爽免费
|
国产一级特黄高清免费大片
|
日韩大片在线永久免费观看网站
|
国产免费女女脚奴视频网
|
97久久国产亚洲精品超碰热
|
日韩免费一级毛片
|
国产精品小视频免费无限app
|
亚洲av福利无码无一区二区
|
亚洲精品在线免费观看
|
亚洲色精品VR一区区三区
|
亚洲国产精品无码久久青草
|
国偷自产一区二区免费视频
|
国产成人精品日本亚洲专区6
|
免费v片在线观看无遮挡
|
野花香高清视频在线观看免费
|
久久亚洲日韩看片无码
|
成人片黄网站A毛片免费
|
香蕉视频免费在线播放
|
国产亚洲精品观看91在线
|
91免费资源网站入口
|
免费毛片毛片网址
|
亚洲日韩区在线电影
|
国产在线19禁免费观看国产
|
免费无码一区二区三区蜜桃
|
色在线亚洲视频www
|
亚洲中文字幕视频国产
|
国产精品久久久久久久久免费
|
男女交性无遮挡免费视频
|
久久亚洲精品人成综合网
|
亚洲乱码国产乱码精品精
|
成年网站免费视频A在线双飞
|