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 © 寒武紀
主站蜘蛛池模板:
亚洲成人精品久久
|
国产精品无码永久免费888
|
亚洲AV成人精品网站在线播放
|
蜜桃传媒一区二区亚洲AV
|
蜜桃传媒一区二区亚洲AV
|
中文字幕无码播放免费
|
久久久久免费看成人影片
|
亚洲国产成人精品激情
|
精品久久亚洲一级α
|
日本免费污片中国特一级
|
日本zzzzwww大片免费
|
亚洲人成无码www久久久
|
亚洲AV无码乱码在线观看裸奔
|
亚洲制服丝袜精品久久
|
高潮内射免费看片
|
97国产在线公开免费观看
|
久久精品国产亚洲AV果冻传媒
|
国产激情免费视频在线观看
|
亚洲老妈激情一区二区三区
|
麻豆狠色伊人亚洲综合网站
|
无码人妻一区二区三区免费
|
亚洲www在线观看
|
最近2019中文字幕免费看最新
|
亚洲国产午夜福利在线播放
|
在线综合亚洲中文精品
|
国产成人aaa在线视频免费观看
|
亚洲国产无套无码av电影
|
免费v片在线观看视频网站
|
亚洲国产成人手机在线观看
|
四虎免费影院ww4164h
|
春暖花开亚洲性无区一区二区
|
亚洲免费日韩无码系列
|
国产aⅴ无码专区亚洲av麻豆
|
久久精品国产亚洲av麻豆图片
|
久久久久国产免费
|
久久久久久亚洲精品中文字幕
|
成人午夜免费福利视频
|
免费人成网站永久
|
国产午夜鲁丝片AV无码免费
|
亚洲色大成网站www
|
毛片免费观看视频
|