浏览 3285 次
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-02-22
1.注意为防止编码设置无效,请在编码设置完后,显示调用下request.getParameter("");(tomcat5.0测试通过) 据说其他服务器,可能显示调用了,也有可能被服务器重置; 2.有时已经有filter需要设置gbk编码,为了不影响原先的filter功能,我是直接在ajax提交时候,带个服务端要设置的编码格式 例如 Ajax.request("/myaction.do?charset=utf-8") 服务端filter,要用request.getQueryString() 截取charset值 ,注意千万不要用request.getParameter("charset"); 3.注意,在没设置编码格式前,不要加 watch监控 比如有个表达式 request.getParameter("*"); 首先分析通过正常GET,Post提交页面和AJAX提交页面有什么不同看截图 Get ,Post正常方式提交数据 AJAX方式提交数据 主意AJAX多了个x-requested-with信息所以可以采用获取HTTP Header方法来判断是采用那种提交方式提交数据的所以 主要代码如下 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // Conditionally select and set the character encoding to be used HttpServletRequest httpRequest = (HttpServletRequest) request; HttpServletResponse httpResponse = (HttpServletResponse) response; String requestedWith = httpRequest.getHeader("x-requested-with"); String type = request.getContentType(); if (requestedWith != null && "XMLHttpRequest".equals(requestedWith) && null != type && "application/x-www-form-urlencoded".equals(type)) { httpRequest.setCharacterEncoding("UTF-8"); httpResponse.setCharacterEncoding("UTF-8"); httpRequest.getParameterMap(); } else { request.setCharacterEncoding("gbk"); response.setContentType("text/html;charset=" + "gbk"); } chain.doFilter(request, response); } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-09-18
最后修改:2009-09-18
你这个跟http://www.iteye.com/topic/157698#里面二楼贴子一样的吧
我前些时候遇到过这个问题,我也写了一篇博客记录了一下(http://hjg1988.iteye.com/admin/blogs/467715),跟你的方案有不同,不过看起来你这个方案似乎更好啊,我回去测试一下。。 |
|
返回顶楼 | |