request经过struts处理后默认encoding是iso8859-1, 要纠正这个问题要赶在struts的黑手之前 ,建立filter,
在ActionServlet之前拦截*.do,转换编码
解决Struts乱码问题
a) 配置一个Filter过滤器,加入request.setCharacterEncoding("UTF-8");
b) 写一个Servlet继承自ActionServlet在doGet,doPost方法中加入request.setCharacterEncoding("UTF-8");
i. 修改web.xml,把ActionServlet改成自己的类
c) 利用自定义的RequestProceor类中的processPreprocess,加入request.setCharacterEncoding("UTF-8");
a) get/post 方式乱码解决方案:
i. Tomcat默认在5以后get和post提交的解决不一样。
ii. Post--->
1. 提交页面设置contentType="text/html;charset=utf-8";
2. 接收页面设置request.setCharacterEncoding("utf-8"),显示时也设置 contentType="text/html;charset=utf-8";
3. Struts1默认ISO-8859-1,所以我们需要人工设置乱码解决。参见四
iii. Get
1. 默认URL地址提交的是ISO-8859-1的编码。即使做了上面的处理,也不行。
2. 修改tomcat/conf/server.xml
a) <Connector port="80" protocol="HTTP/1.1"
b) connectionTimeout="20000"
c) redirectPort="8443" URIEncoding="UTF-8"/>