﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-业精于勤荒于嬉，行成于思毁于随-随笔分类-struts2相关问题积累</title><link>http://www.blogjava.net/produ/category/54754.html</link><description>&lt;h2&gt;见证学习的轨迹，记录闪光的想法&lt;/h2&gt;</description><language>zh-cn</language><lastBuildDate>Fri, 20 Mar 2015 02:35:29 GMT</lastBuildDate><pubDate>Fri, 20 Mar 2015 02:35:29 GMT</pubDate><ttl>60</ttl><item><title>struts2表单提交乱码问题</title><link>http://www.blogjava.net/produ/archive/2015/03/20/423663.html</link><dc:creator>都较瘦</dc:creator><author>都较瘦</author><pubDate>Fri, 20 Mar 2015 02:30:00 GMT</pubDate><guid>http://www.blogjava.net/produ/archive/2015/03/20/423663.html</guid><wfw:comment>http://www.blogjava.net/produ/comments/423663.html</wfw:comment><comments>http://www.blogjava.net/produ/archive/2015/03/20/423663.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/produ/comments/commentRss/423663.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/produ/services/trackbacks/423663.html</trackback:ping><description><![CDATA[环境是Spring配合Struts2，页面提交表单，表单中文乱码，理应是比较简单的一个问题，但想不到解决的方式出乎意料。<br />其实无外乎以下几个问题<br /><br /><strong>1：</strong>struts2如果使用了国际化，那么需要指定编码方式<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">1</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">constant&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="struts.locale"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="zh_CN"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><br /><span style="color: #008080; ">2</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">constant&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="struts.i18n.encoding"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="UTF-8"</span><span style="color: #0000FF; ">/&gt;</span></div><strong><br />2：</strong>设置好所使用的页面的内容类型（JSP）<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">1</span>&nbsp;<span style="background-color: #ffff00;">&lt;%</span><span style="background-color: #f5f5f5;">@&nbsp;page&nbsp;language</span><span style="background-color: #f5f5f5;">=</span><span style="background-color: #f5f5f5;">"</span><span style="background-color: #f5f5f5;">java</span><span style="background-color: #f5f5f5;">"</span><span style="background-color: #f5f5f5;">&nbsp;contentType</span><span style="background-color: #f5f5f5;">=</span><span style="background-color: #f5f5f5;">"</span><span style="background-color: #f5f5f5;">text/html;&nbsp;charset=utf-8</span><span style="background-color: #f5f5f5;">"</span><span style="background-color: #f5f5f5;">&nbsp;pageEncoding</span><span style="background-color: #f5f5f5;">=</span><span style="background-color: #f5f5f5;">"</span><span style="background-color: #f5f5f5;">utf-8</span><span style="background-color: #f5f5f5;">"</span><span style="background-color: #ffff00;">%&gt;</span><br /><span style="color: #008080; ">2</span>&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">meta&nbsp;</span><span style="color: #FF0000; ">http-equiv</span><span style="color: #0000FF; ">="content-type"</span><span style="color: #FF0000; ">&nbsp;content</span><span style="color: #0000FF; ">="text/html;&nbsp;charset=utf-8"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span></div><br /><strong>3：</strong>设置好request和response的setCharacterEncoding()方法，当然了，不推荐重复造轮子，让已有的轮子转起来就好，直接在项目中添加过滤器<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp; &nbsp; &nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">filter</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">&nbsp;2</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">filter-name</span><span style="color: #0000FF; ">&gt;</span>encodingFilter<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">filter-name</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">&nbsp;3</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">filter-class</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">&nbsp;4</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;org.springframework.web.filter.CharacterEncodingFilter<br /><span style="color: #008080; ">&nbsp;5</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">filter-class</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">&nbsp;6</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">init-param</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">&nbsp;7</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">param-name</span><span style="color: #0000FF; ">&gt;</span>encoding<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">param-name</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">&nbsp;8</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">param-value</span><span style="color: #0000FF; ">&gt;</span>UTF-8<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">param-value</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">&nbsp;9</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">init-param</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">10</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">init-param</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">11</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">param-name</span><span style="color: #0000FF; ">&gt;</span>forceEncoding<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">param-name</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">12</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">param-value</span><span style="color: #0000FF; ">&gt;</span>true<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">param-value</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">13</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">init-param</span><span style="color: #0000ff;">&gt;</span><br /><span style="color: #008080; ">14</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">filter</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">15</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">filter-mapping</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">16</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">filter-name</span><span style="color: #0000FF; ">&gt;</span>encodingFilter<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">filter-name</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">17</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">url-pattern</span><span style="color: #0000FF; ">&gt;</span>/*<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">url-pattern</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">18</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">filter-mapping</span><span style="color: #0000FF; ">&gt;</span></div><br />上述三种情况是我当时能想到的，检查之后我再次尝试，但是依然乱码，之后我幻想着将过滤器的顺序条换，将org.springframework.web.filter.CharacterEncodingFilter过滤器置前，<br />但是问题依然没有解决。最后多方求助，是如下解决的。<br /><br /><strong>4：</strong>form标签记得显式的声明提交方式<br />提交乱码时的form标签并没有显式的声明method为post，需要添加。<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">1</span>&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">form&nbsp;</span><span style="color: #FF0000; ">action</span><span style="color: #0000FF; ">="/supply/saveAmbiguousCustomer_mgr.htm"</span><span style="color: #FF0000; ">&nbsp;id</span><span style="color: #0000FF; ">="sendreq"</span><span style="color: #FF0000; ">&nbsp;<strong><em>method</em></strong></span><span style="color: #0000FF; "><strong><em>="POST"</em></strong></span><span style="color: #0000FF; ">&gt;</span></div><img src ="http://www.blogjava.net/produ/aggbug/423663.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/produ/" target="_blank">都较瘦</a> 2015-03-20 10:30 <a href="http://www.blogjava.net/produ/archive/2015/03/20/423663.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>