nighty
折騰的年華
posts - 37, comments - 143, trackbacks - 0, articles - 0
導航
BlogJava
首頁
新隨筆
聯(lián)系
聚合
管理
<
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)
操作系統(tǒng)(3)
數(shù)據(jù)庫(3)
服務器部署(5)
測試(2)
系統(tǒng)集成(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中連傳入到的參數(shù)都不區(qū)分大小寫??
--starhe
2.?re: B/S,C/S架構混合使用[未登錄]
評論內容較長,點擊標題查看
--eagle
3.?re: B/S,C/S架構混合使用[未登錄]
補充一下:用的語言是java,開發(fā)環(huán)境是eclipse
--eagle
4.?re: B/S,C/S架構混合使用
評論內容較長,點擊標題查看
--Unbotrusive
5.?re: struts2中重定向中文參數(shù)亂碼梳理[未登錄]
有用啊
--tony
閱讀排行榜
1.?ubuntu安裝Java開發(fā)環(huán)境(38193)
2.?Eclipse3.3安裝中文語言包(13945)
3.?B/S,C/S架構混合使用(13767)
4.?Http狀態(tài)碼思維導圖(13767)
5.?添加完整的Eclipse RCP幫助系統(tǒng)(8940)
評論排行榜
1.?B/S,C/S架構混合使用(25)
2.?無奈只能放棄iBatis(24)
3.?Eclipse3.3安裝中文語言包(13)
4.?httpclient3.1使用小結(8)
5.?JDBC連接DB2的一些總結(8)
struts2中重定向中文參數(shù)亂碼梳理
Posted on 2011-01-14 16:41
寒武紀
閱讀(6771)
評論(3)
編輯
收藏
所屬分類:
Struts2
在項目中剛好有一個地方需要在服務器端處理一個請求后,重定向到另一個Action,這樣瀏覽器的url才會變成另一個url,用戶重新刷新時,才不會彈出一個對話框問你是不是要重新提交form。于是就自然而然地用了redirectAction。大概如下:
1
<
result
name
="myInfoSuccess"
type
="redirectAction"
>
2
myapp_myInfo.action?msg=${msg}
3
</
result
>
因為重定義會丟失所有的請求參數(shù)和值棧,所以這里轉向時,加了一個請求參數(shù)msg,msg在要重定向的action中設置。
問題來了,重定向到myapp_myInfo.action時,這個Action里面取出msg參數(shù)時變成亂碼!!! 不論中文或是英語還是數(shù)字,全是亂碼,折騰了一翻,
URLEncoder
、
URLDEncoder
進行URL Base64編碼和解碼處理,包括new String(msg.getBtye("ISO-8859-1"), "UTF-8")這種處理方式仍無法奏效。google了一下并且抱起書本認真看了看struts2重定向問題后。大概有了個思路。
所有的重定向操作都會丟失所有的請求參數(shù)、請求屬性等,當然包括Action的處理結果也會丟失。
首先搞清楚redirect、redirectAction的區(qū)別:
1. redirect類型struts2是調用HttpServletResponse的sendRedirect(String)方法來重定向到指定的資源,可以是一個視圖結果,也可以是其它類型的Action;
2. redirectAction同樣是重新生成一個全新的請求。但是struts2內部卻是使用ActionMapperFactory提供的ActionMapper來重定向,它只能跳轉到另外一個Action;
由于redirectAction使用的是ActionMapper來重定向,也就同時使用ActionMapper的編碼方式重新進行編碼,這就導致了后面在取出參數(shù)時變成亂碼,沒有具體閱讀它的源代碼,但是多次不同的編碼再想重新還原出來就有點麻煩了。而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參數(shù)做一次轉碼,因為前面的Action過來時就做了URL base64編碼,如果直接發(fā)給瀏覽器,就會在瀏覽器看到一串帶%的URL base64編碼字符,所以要加上
1
String msg
=
URLDecoder.decode(getMsg(),
"
UTF-8
"
);
2
setMsg(msg);
把它設置回為中文,瀏覽器才能正常。
還得提到另一個重定向類型chain,它是Action鏈,還能維持當前的值棧不變。不過用它重定向后,雖然跳到其它Action,但是在瀏覽器端的URL是不會變化的,這樣開頭提到的那個問題仍是無法解決的!
剛進場的時候戲就落幕
Feedback
#
re: struts2中重定向中文參數(shù)亂碼梳理
回復
更多評論
2011-01-16 12:05 by
最有效的減肥藥
不錯,學習了
#
re: struts2中重定向中文參數(shù)亂碼梳理[未登錄]
回復
更多評論
2013-08-30 14:34 by
allen
還是搞不定啊
#
re: struts2中重定向中文參數(shù)亂碼梳理[未登錄]
回復
更多評論
2013-10-07 17:49 by
tony
有用啊
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發(fā)表評論。
網(wǎng)站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
struts2中重定向中文參數(shù)亂碼梳理
Struts2+FreeMarker中利用plainText處理Ajax的一個技巧
Powered by:
BlogJava
Copyright © 寒武紀
主站蜘蛛池模板:
久久精品国产亚洲7777
|
日本一区免费电影
|
国产成年无码久久久免费
|
在线观着免费观看国产黄
|
一本无码人妻在中文字幕免费
|
69视频在线观看高清免费
|
亚洲另类自拍丝袜第五页
|
亚洲欧洲日韩极速播放
|
亚洲一区二区三区无码影院
|
91在线手机精品免费观看
|
免费人成视频在线观看网站
|
国产成人久久精品亚洲小说
|
亚洲熟女乱色一区二区三区
|
亚洲国产第一站精品蜜芽
|
亚洲精品成人片在线观看精品字幕
|
毛片a级三毛片免费播放
|
丁香花在线观看免费观看图片
|
亚洲国产成人精品青青草原
|
亚洲一级高清在线中文字幕
|
亚洲一区二区三区在线网站
|
亚洲精品永久在线观看
|
美女视频黄频a免费大全视频
|
男女污污污超污视频免费在线看
|
国产视频精品免费视频
|
久久精品免费视频观看
|
日本最新免费网站
|
天天看片天天爽_免费播放
|
午夜精品射精入后重之免费观看
|
91精品国产免费入口
|
最近免费中文字幕4
|
国产又粗又长又硬免费视频
|
av无码免费一区二区三区
|
在线看片免费人成视频福利
|
中文字幕在线观看免费视频
|
毛片a级毛片免费播放100
|
亚洲精品国产V片在线观看
|
亚洲精品视频在线
|
亚洲乱码国产一区网址
|
久久国产亚洲电影天堂
|
亚洲人色婷婷成人网站在线观看
|
亚洲午夜无码片在线观看影院猛
|