评论

收藏

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

开发技术 开发技术 发布于:2021-10-23 16:42 | 阅读数:310 | 评论:0

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>
关注下面的标签,发现更多相似文章