strust2接收URL参数为中文是乱码问题的解决
来源:互联网 发布:mac java 环境变量 编辑:程序博客网 时间:2024/05/16 15:56
这几天在做一个网站,用struts2框架作为展现层,与web端的页面做交互,其间就遇到了一个问题,困了我好久,我前端用ajax异步调用了一个action方法,链接中还有参数(中文的),在action中request接受之后参数全部为乱码,这个JSP包括struts2中该设置编码的地方我都设为了UTF-8,结果还是出现了这个问题。网上查了好久,左改改又改改,终于解决了这个问题,解决方案如下:
1.提交参数时要用POST方式
2.struts.properties文件中加入:struts.locale=zh_CN, struts.i18n.encoding=UTF-8
3.tomcat的server.xml文件中对应的8080端口号的文件中加入useBodyEncodingForURI="true" , URIEncoding="UTF-8"
4.对接收的参数进行字符编码转换:new String(request.getParameter("参数名").getBytes("ISO-8859-1"), "UTF-8");
这个方法最给力,我的就是这样解决的,如果还没有解决,那就用EncodeFilter吧!代码如下:
package com.yun.action;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class EncodeFilter implements Filter{protected String encoding=null; protected FilterConfig filterConfig=null; protected boolean ignore=true; public void destroy() { } public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) servletRequest; HttpServletResponse response = (HttpServletResponse) servletResponse; String requestedWith = request.getHeader("x-requested-with"); String type = request.getContentType(); if (requestedWith != null && "XMLHttpRequest".equals(requestedWith) && null != type && ("application/x-www-form-urlencoded".equals(type)||"application/x-www-form-urlencoded; charset=UTF-8".equals(type))) { request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); request.getParameterMap(); } filterChain.doFilter(request, response); } public void init(FilterConfig arg0) throws ServletException { // TODO Auto-generated method stub } }
然后配置文件中加入:
<filter> <filter-name>encoding</filter-name> <filter-class>com.yun.action.EncodeFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
这样的话基本上乱码问题都可以解决了,如果可以帮到你,帮着顶顶啊!
- strust2接收URL参数为中文是乱码问题的解决
- 解决URL中文参数乱码的问题
- 解决URL中文参数乱码的问题
- indy httpserver 接收URL包含中文参数乱码的问题
- ajax 解决url中文参数乱码问题
- 解决url传递中文参数乱码问题
- 解决Url带中文参数乱码问题
- 解决Url带中文参数乱码问题
- 解决Url带中文参数乱码问题
- URL传参数解决中文乱码问题
- 解决Url带中文参数乱码问题
- android url中中文参数乱码问题的解决
- 解决通过url传递中文参数乱码的问题
- springmvc 接收参数中文乱码的问题
- get请求参数为中文是乱码的问题
- asp.net接收URL中文参数的乱码解决方案
- spring mvc 框架URL接收中文参数的乱码解决方案
- url传递中文参数乱码的问题
- 统一数据库互联[UDBC]的设计
- centos 下安装storm
- session httpsessionlistener session的超时 讨论
- [游戏]紫冰服务器发布
- Oracle11g ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
- strust2接收URL参数为中文是乱码问题的解决
- 显示系统时间(保存为HTML文件就能看到效果)
- 李明:揭开日本媒体报道中国的“画皮”
- android 控件的隐藏属性 .
- Finereport,水晶报表,RQ支持数据源的不同
- 中国职员的九种劣根性
- css常用代码
- oracle 数据字典(部分常用表)
- 【php】用set_error_handler找出未定义的变量