经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Struts2 » 查看文章
Struts2中action接收中文参数为乱码解决方法
来源:cnblogs  作者:我不是吧务  时间:2019/5/17 8:38:14  对本文有异议
老实说,中文乱码问题是每个程序员会经常遇到的问题,而且也是一个很头疼的问题。网上很多关于解决中文乱码的帖子,看几个之后你会发现大都是一样的。但是我们照着做,却还是无法解决乱码问题。我也是看了好多帖子,好多解决方法,最后把几个方法结合起来,修改一下就可以用了。废话少说,下面进入正题。
 
首先Struts默认的编码方式是utf-8,出现乱码首先检查jsp页面的编码方式是否也是utf-8,也许你会很奇怪,为什么统一了编码方式,还是出现乱码呢?原因是jsp网页发送请求request,默认编码是ISO-8859-1。也就是说,虽然你Jsp页面设置的编码方式是utf-8,但是把中文参数发送出去,系统默认把参数以ISO-8859-1编码方式放到request中了。
 
下面是针对post方式提交请求解决中文乱码的方法:
 
1.编写过滤器:

 

  1. package org.filter;
  2.  
  3.  
  4. import java.io.IOException;
  5. import java.net.URLDecoder;
  6. import javax.servlet.Filter;
  7. import javax.servlet.FilterChain;
  8. import javax.servlet.FilterConfig;
  9. import javax.servlet.ServletException;
  10. import javax.servlet.ServletRequest;
  11. import javax.servlet.ServletResponse;
  12. import javax.servlet.http.HttpServletRequest;
  13. import javax.servlet.http.HttpServletResponse;
  14. public class CharsetEncodingFilter implements Filter {
  15. @Override
  16. public void doFilter(ServletRequest sRequest, ServletResponse sResponse,
  17. FilterChain filterChain) throws IOException, ServletException
  18. {
  19. HttpServletRequest request = (HttpServletRequest) sRequest;
  20. HttpServletResponse response = (HttpServletResponse) sResponse;
  21. // 设置字符集
  22. request.setCharacterEncoding("utf-8");
  23. response.setCharacterEncoding("utf-8");
  24. filterChain.doFilter(request, response);
  25. }
  26.  
  27. @Override
  28. public void destroy() {
  29. // TODO Auto-generated method stub
  30. }
  31.  
  32. @Override
  33. public void init(FilterConfig arg0) throws ServletException {
  34. // TODO Auto-generated method stub
  35. }
  36. }

 

2.配置web.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app version="2.5"
  3. xmlns="http://java.sun.com/xml/ns/javaee"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  6. http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  7. <!-- <welcome-file-list>
  8. <welcome-file>index.jsp</welcome-file>
  9. </welcome-file-list> -->
  10. <!-- 过滤所有的请求的编码为utf-8 -->
  11. <filter>
  12. <filter-name>CharsetEncodingFilter</filter-name>
  13. <filter-class>org.filter.CharsetEncodingFilter</filter-class>
  14. </filter>
  15. <filter-mapping>
  16. <filter-name>CharsetEncodingFilter</filter-name>
  17. <url-pattern>/*</url-pattern>
  18. </filter-mapping>
  19. <filter>
  20. <filter-name>struts2</filter-name>
  21. <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  22. <!-- <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> -->
  23. </filter>
  24. <filter-mapping>
  25. <filter-name>struts2</filter-name>
  26. <url-pattern>/*</url-pattern>
  27. </filter-mapping>
  28. </web-app>

 

通过以上方法,把所有请求的编码方式都设成了utf-8。如果没有用到struts2,上面第二个<filter>开始的代码就不要写上了。用第一个filter就可以了。希望可以帮到更多因为中文乱码烦心的朋友们

 

原文链接:http://www.cnblogs.com/gmaaa123/p/10875978.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号