nighty
折騰的年華
posts - 37, comments - 143, trackbacks - 0, articles - 0
導航
BlogJava
首頁
新隨筆
聯系
聚合
管理
<
2013年10月
>
日
一
二
三
四
五
六
29
30
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
8
9
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(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開發環境(38202)
2.?Eclipse3.3安裝中文語言包(13956)
3.?B/S,C/S架構混合使用(13784)
4.?Http狀態碼思維導圖(13780)
5.?添加完整的Eclipse RCP幫助系統(8950)
評論排行榜
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
寒武紀
閱讀(6777)
評論(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 © 寒武紀
主站蜘蛛池模板:
成人浮力影院免费看
|
在线A级毛片无码免费真人
|
亚洲精品91在线
|
手机看片久久国产免费
|
中文无码日韩欧免费视频
|
亚洲专区在线视频
|
国产网站在线免费观看
|
99麻豆久久久国产精品免费
|
亚洲特级aaaaaa毛片
|
亚洲国产综合精品一区在线播放
|
98精品全国免费观看视频
|
亚洲av成人片在线观看
|
亚洲成AV人片在线播放无码
|
国产精品视_精品国产免费
|
美女在线视频观看影院免费天天看
|
亚洲中文字幕久久精品无码A
|
在线免费观看一级片
|
青青操视频在线免费观看
|
亚洲AV无码久久久久网站蜜桃
|
亚洲乱码国产一区网址
|
全免费毛片在线播放
|
伊人久久大香线蕉免费视频
|
亚洲人成人伊人成综合网无码
|
亚洲av无码一区二区乱子伦as
|
国产一级淫片视频免费看
|
精品免费久久久久久久
|
丁香花在线视频观看免费
|
色偷偷亚洲男人天堂
|
xxx毛茸茸的亚洲
|
久久综合九九亚洲一区
|
亚洲成人国产精品
|
午夜爱爱免费视频
|
成年人视频免费在线观看
|
a视频免费在线观看
|
白白色免费在线视频
|
亚洲最大中文字幕无码网站
|
免费一级全黄少妇性色生活片
|
久久久久亚洲av无码专区喷水
|
亚洲日本中文字幕一区二区三区
|
成人免费a级毛片
|
91九色视频无限观看免费
|