nighty
折騰的年華
posts - 37, comments - 143, trackbacks - 0, articles - 0
導航
BlogJava
首頁
新隨筆
聯系
聚合
管理
<
2013年8月
>
日
一
二
三
四
五
六
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
6
7
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(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開發環境(38192)
2.?Eclipse3.3安裝中文語言包(13944)
3.?B/S,C/S架構混合使用(13765)
4.?Http狀態碼思維導圖(13765)
5.?添加完整的Eclipse RCP幫助系統(8938)
評論排行榜
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
寒武紀
閱讀(6770)
評論(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 © 寒武紀
主站蜘蛛池模板:
成年女人永久免费观看片
|
国产一卡2卡3卡4卡2021免费观看
|
国产精品二区三区免费播放心
|
亚洲一区中文字幕
|
国拍在线精品视频免费观看
|
亚洲AV无码乱码在线观看代蜜桃
|
久久国产色AV免费看
|
亚洲国产成人精品无码区在线秒播
|
久久性生大片免费观看性
|
4338×亚洲全国最大色成网站
|
国产成人无码免费看片软件
|
国产亚洲人成网站观看
|
95老司机免费福利
|
亚洲毛片基地4455ww
|
免费毛片在线播放
|
日日躁狠狠躁狠狠爱免费视频
|
亚洲AV成人无码网站
|
日本免费xxxx
|
亚洲人AV在线无码影院观看
|
免费播放特黄特色毛片
|
美女无遮挡拍拍拍免费视频
|
亚洲邪恶天堂影院在线观看
|
97无码免费人妻超级碰碰碰碰
|
日本亚洲中午字幕乱码
|
亚洲欧洲国产精品香蕉网
|
成人福利免费视频
|
精品国产_亚洲人成在线
|
亚洲精品无码久久千人斩
|
99久久免费中文字幕精品
|
亚洲熟妇久久精品
|
久久夜色精品国产亚洲av
|
日本zzzzwww大片免费
|
美女被暴羞羞免费视频
|
亚洲V无码一区二区三区四区观看
|
在线永久看片免费的视频
|
国产99久久亚洲综合精品
|
亚洲性天天干天天摸
|
国产老女人精品免费视频
|
久久午夜夜伦鲁鲁片免费无码
|
亚洲色成人WWW永久在线观看
|
久久夜色精品国产亚洲av
|