项目总体编码都为:GBK
过滤器JAVA代码
package com.sunstar.sos.filter;
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;
/**
*
* <p>Title: ConditionAction.java</p>
*
* <p>Description: 解决ajax post请求中文乱码filter类 </p>
*
*
* @author
* @version 1.0
*/
public class RequestEncodingFilter implements Filter {
/** ajax请求的编码 */
public final String ajaxEncoding = "utf-8";
private boolean ignore = false;
/** url请求参数中用户标志是否是一个ajax请求的标志名称 */
private String ajaxFlag = "__ajax__";
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if (ignore) {
chain.doFilter(request, response);
return;
}
HttpServletRequest req = (HttpServletRequest) request;
// 这里不使用getParameter方法,否则会使后续setCharacterEncoding方法失效
String queryString = req.getQueryString();
// 如果请求url参数中含有flag(默认为__ajax__),则表明使用ajax请求,则编码设置为utf-8
if (queryString != null && queryString.indexOf(ajaxFlag) != -1) {
request.setCharacterEncoding(ajaxEncoding);
// 调用一次getParameter方法,使得在此之后再调用setCharacterEncoding将会无效
// (web框架会在之后再调用此方法,但是已经失效)
// 参数不一定为ajaxFlag,可以是任何值
request.getParameter(ajaxFlag);
}
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) throws ServletException {
String value = filterConfig.getInitParameter("ignore");
ajaxFlag = filterConfig.getInitParameter("ajaxFlag");
if (ajaxFlag == null) {
ajaxFlag = "__ajax__";
}
if (value == null) {
ignore = false;
} else if (value.equalsIgnoreCase("true")
|| value.equalsIgnoreCase("yes")) {
ignore = true;
} else {
ignore = false;
}
}
}
web.xml配置
<filter>
<filter-name>requestEncoding</filter-name>
<filter-class>com.sunstar.sos.filter.RequestEncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>requestEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
ajax请求:actionName.action?__ajax__
分享到:
相关推荐
需要对webconfig修改,主要是要修改页面编码格式为utf-8
具体描述ajax的获取,ajax属性,参数设置,编程步骤,缓存问题,get/post乱码问题,以及应用场景的阐述 onreadystatechange 绑订事件处理函数(处理readystatechange事件)。 注:当readyState属性值发生了任何的改变...
今天遇到一个问题,有关ajax请求中传输中文,遇到乱码的问题。 如下代码: 代码如下:function UpdateFolderInfoByCustId(folderId, folderName, custId) { $.ajax({ type: “Post”, contentType: “application/...
今天终于解决了AJAX的中文乱码问题,写篇文章来帮助一下有同样问题的朋友们。我的开发环境:XP, eclipse,使用GB18030编码。 当遇到这个问题时,到网上去查了好多文章,提到几种解决方案,如:全站UTF-8编码;请求头...
AJAX在Post中文的时候乱码的解决方法
在用jquery处理html5的应用的时候,一直在firefox下测试都正常,用户用pad访问的时候说有乱码,自己试验了下果然,后发现chrome和ie内核下都是有此问题,此问题设置了页面属性为utf-8时候,只有firefox是传的charset...
在JQuery的Ajax POST请求中,进行请求,其中的中文在后台,显示为乱码,在FF/Chrome中,可以正常传递中文,但是在IE下,则存在问题
ajax乱码解决总结 第一,javascript沿用java的字符处理方式,内部是使用unicode来处理所有字符的, 第二,utf-8是每个汉字(unicode字符)用3个字节来存储。 第三,用utf-8来send数据是不会出现乱码的,是后台程序...
使用Ajax传递中文参数,如果不对参数进行处理的话,传到后台会变成乱码,经测试可以使用如下方法 这里是以jquery.autocomplete插件中获取输入框中的数据传到后台为例: 注意要对中文使用encodeURI编码两次 代码如下:...
get传送数据要经过encodeURIComponent编码,防止乱码。 get方式,服务器端用Request.QueryString获取变量的值; post方式,服务器端用Request.Form获取提交的数据; 两种方式的参数都可以用Request来获得。
今天遇到一个问题,有关ajax 请求中传输中文,遇到乱码的问题。 如下代码: function UpdateFolderInfoByCustId(folderId, folderName, custId) { $.ajax({ type: "Post", contentType: "application/x-...
ajax-Post和Get请求与传统请求、ajax乱码问题、ajax同步异步、ajax代码封装jQuery库、跨域问题以及解决方案、ajax搜索联想 自动补全、附录:HTTP状态信息
利用ajax实现excel报表导出【解决乱码问题】,供大家参考,具体内容如下 背景 项目中遇到一个场景,要导出一个excel报表。由于需要token验证,所以不能用a标签;由于页面复杂,所以不能使用表单提交。初步考虑前端...
如果创建失败则返回false 属性:method – 请求方法,字符串,POST或者GET,默认为POST url – 请求URL,字符串,默认为空 async – 是否异步,true为异步,false为同步,默认为true content – 请求的内容...
当我们用javascript写ajax程序写得很“开心”的时候,突然有人告诉你有一种东西叫jquery,它会告诉你不直接和HttpRequest是多么的快乐,同时你再也不需要再烦恼纠结的ajax乱码问题,更幸福的是你的js代码将大大地...
乱码,当传递中文或者特殊字符的时候,前台显示出现乱码 解决办法:使用编码encodeURI(‘蜗牛’) 测试结果:通过使用Chrome测试,结果get的两种问题,都已经得到了解决 使用post遇到的问题:
做AJAX应用,jquery提供的$.get()、$.post()函数都可以用于提交数据,但建议使用$.ajax()来提交,那两个函数都不 提供错误返回信息,不利全面掌控。 提交数据是action代表要执行的操作,id传递文章id,page是请求的...
Jquery的Ajax技术(重点) jquery是一个优秀的js框架,...区别:get有字节码乱码问题,post无字节码乱码问题(获取请求页面数据到后台,后台response.setContextType(“text/html;charset=UTF-8”)响应乱码问题还与原来