通过过滤器(Filter)解决JSP的Post和Request中文乱码问题_JSP编程

jsp代码:

import javax.servlet.*;
import javax.servlet.http.*;

public class CharsetFilter implements Filter
{
  public void destroy()
  {

  }
  public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
  {
    try
    {
      HttpServletRequest httpRequest = (HttpServletRequest)request;
      String method = httpRequest.getMethod().toLowerCase();
      if(method.equals("post"))
      {
        //如果是post,即表单方法,直接设置charset即可
        request.setCharacterEncoding("UTF-8");
      }
      else if(method.equals("get"))
      {
        //如果是get方法
        request.setCharacterEncoding("UTF-8");
        request = new HttpServletRequestWrapper((HttpServletRequest)request)
        {
          public String getParameter(String str)
          {
            try
            {
              return new String(super.getParameter(str).getBytes("iso-8859-1"),"GBK");
            }
            catch(Exception e)
            {
              return null;
            }

          }
        };
      }

      chain.doFilter(request, response);
    }
    catch(Exception e){}
  }

  public void init(FilterConfig filterConfig)
  {

  }
}

过滤器配置:

<filter>
    <filter-name>CharFilter</filter-name>
    <filter-class>CharsetFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>CharFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
</filter-mapping>

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索jsp
, post
, 中文乱码
request
filter 过滤器 乱码、post乱码过滤器、filter 过滤器、java filter过滤器、锥形过滤器kyfilter,以便于您获取更多的相关知识。

时间: 2024-09-23 05:20:56

通过过滤器(Filter)解决JSP的Post和Request中文乱码问题_JSP编程的相关文章

JSP用过滤器解决request getParameter中文乱码问题_JSP编程

(1)客户端的数据一般是通过HTTP GET/POST方式提交给服务器,在服务器端用request.getParameter()读取参数时,很容易出现中文乱码现象. (2)用过滤器解决request中文乱码问题. (3)代码如下: package my; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class ChineseFilter implements Filter { //定义

解决JSP保存到数据库丢失格式的方法_JSP编程

网站上的文章用什么存储?使用Oralce用CLOB存储,Java操作CLOB的方法网上很多,可是发现读取后显示在网页上和录入时的格式完全不同,该有的段落已经不复存在. 由于页面中使用的是textarea标签而不是强大的网页文本编辑器,所以要自己处理格式的问题了,下面是我找到的一个专业函数, 使用它将前台传过来的文章字符串转义一下再存入数据库,这次再读取出来的文章就有段落的显示了. JSP保存到数据库丢失格式的解决方法代码引用: /** * 格式化文章信息,保持文章的格式.保存时用. * * @p

配置Tomcat解决URL传参引出的中文乱码问题

                         今天在写一个JSP页面时候,发现下面报错: <span style="font-size:18px;"> <a href="request.jsp?username=小七七">测试URL传参</a></span>     通常情况下,通过使用contentType和下面的就可以解决传参过程中的中文乱码问题,但是貌似URL传参还要设备别的东西. <% request

解决Ajax加载JSon数据中文乱码问题

一.问题描述 使用zTree的异步刷新父级菜单时,服务器返回中文乱码,但项目中使用了SpringMvc,已经对中文乱码处理,为什么还会出现呢? 此处为的异步请求的配置: Java代码 async: { enable: true, url: basePath + '/sysMenu/listSysMenu', autoParam: ["id=parentId"] } SpringMvc中文字符处理: Java代码 <mvc:annotation-driven> <mvc

解决MySQL客户端输出窗口显示中文乱码问题的办法_Mysql

最近发现,在MySQL的dos客户端输出窗口中查询表中的数据时,表中的中文数据都显示成乱码,如下图所示: 上网查了一下原因:之所以会显示乱码,就是因为MySQL客户端输出窗口显示中文时使用的字符编码不对造成的,可以使用如下的命令查看输出窗口使用的字符编码:show variables like 'char%'; 命令执行完成之后显示结果如下所示: 可以看到,现在是使用utf8字符编码来显示中文数据的,但是因为操作系统是中文操作系统,默认使用的字符集是GB2312,所以需要把输出窗口使用的字符编码

JSP动态输出Excel及中文乱码的解决

excel|js|动态|解决|中文|中文乱码 最近在网上看到一个用java来操纵excel的open source,在weblogic上试用了一下,觉得很不错,特此向大家推荐一下. 首先去http://www.andykhan.com/jexcelapi/index.html下载最新的JExcelApi,把jxl.jar置于你的classpath中. 写一个javaBean,利用JExcelApi来动态生成excel文档,我这里写一个最简单的,示意性的.复杂的你可能还要查询数据库什么的. ///

[转]解决get方法传递URL参数中文乱码问题

  来自:http://www.javaeye.com/topic/483158 应用一:解决tomcat下中文乱码问题(先来个简单的)  在tomcat下,我们通常这样来解决中文乱码问题: 过滤器代码: package filter;      import java.io.*;   import javax.servlet.*;   import javax.servlet.http.*;   import wrapper.GetHttpServletRequestWrapper;     

JSP+ MySQL中文乱码问题post提交乱码解决方案_JSP编程

写了两个jsp页面index.jsp和mysql_insert.jsp.数据处理流程为:在浏览器(chrome)上访问index.jsp后在其表单上输入数据,提交至mysql_insert.jsp,mysql_insert.jsp首先将接收到的数据按变量存入MySQL的html_db数据库的person_tb中(该表原有部分数据),然后mysql_insert.jsp再拿出该表中所有数据显示在mysql_insert.jsp页面上. 现在发现,当提交的数据中含有中文(比如变量姓名的值为中文)时,

我的乱码之路——JSP与MySQL交互的中文乱码解决方案及总结

js|mysql|交互|解决|中文|中文乱码      首先实现了一个StringConvert bean(GBtoISO()和ISOtoGB()两个方法),解决了与MySQL数据库交互的时候的部分中文乱码问题:在JSP程序中读取MySQL的中文内容,用这两个方法可以解决乱码问题.     但是从JSP写入到MySQL的中文内容都成了乱码,并且再读出来的时候也显示为"??",在这里应该出现了编码转换过程中的字符信息丢失.郁闷的是,我在命令行窗口中登陆到MySQL后,执行如"I