• 【WEB小工具】EncodingFilter—设置全局编码


      1.我们知道,如果是POST请求,我们需要调用request.setCharacterEncoding("utf-8")

    方法来设计编码。

    1 public void doGet(HttpServletRequest request, HttpServletResponse response)
    2             throws ServletException, IOException {
    3          request.setCharacterEncoding("gbk");  //只适用于post提交,不适用于get
    4          response.setCharacterEncoding("gbk");
    5     }

      2.如果是GET请求,我们需要自己手动来处理编码问题。

      3.如果我们使用了EncodingFilter,那么就处理了POST和GET请求的编码问题。

    修改web.xml:

    <!-- 处理全站请求编码。无论是GET还是POST,默认是UTS-8 -->
    <filter>
        <filter-name>EncodingFilter</filter-name>
        <filter-class>cn.itcast.filter.EncodingFilter</filter-class>
        <init-param>
            <param-name>charset</param-name>
            <param-value>utf-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>EncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    EncodingFilter() 类源代码:

     1 package cn.itcast.filter;
     2 
     3 import java.io.IOException;
     4 
     5 import javax.servlet.Filter;
     6 import javax.servlet.FilterChain;
     7 import javax.servlet.FilterConfig;
     8 import javax.servlet.ServletException;
     9 import javax.servlet.ServletRequest;
    10 import javax.servlet.ServletResponse;
    11 import javax.servlet.http.HttpServletRequest;
    12 
    13 
    14 public class EncodingFilter implements Filter {
    15     private String charset = "UTF-8";
    16     @Override
    17     public void destroy() {}
    18 
    19     @Override
    20     public void doFilter(ServletRequest request, ServletResponse response,
    21             FilterChain chain) throws IOException, ServletException {
    22         HttpServletRequest req = (HttpServletRequest) request;
    23         if(req.getMethod().equalsIgnoreCase("GET")) {
    24             if(!(req instanceof GetRequest)) {
    25                 req = new GetRequest(req, charset);//澶勭悊get璇锋眰缂栫爜
    26             }
    27         } else {
    28             req.setCharacterEncoding(charset);//澶勭悊post璇锋眰缂栫爜
    29         }
    30         chain.doFilter(req, response);
    31     }
    32 
    33     @Override
    34     public void init(FilterConfig fConfig) throws ServletException {
    35         String charset = fConfig.getInitParameter("charset");
    36         if(charset != null && !charset.isEmpty()) {
    37             this.charset = charset;
    38         }
    39     }
    40 }
  • 相关阅读:
    使用纯 CSS 实现响应式的图片显示效果
    10个帮助你快速调试和排错的小技巧
    《JavaScript 实战》:JavaScript 实现拖拽缩放效果
    周末发福利了!26个免费的HTML5模版
    程序人生的四个象限和两条主线
    50份简历设计,助你找到梦寐以求的工作
    6个重构方法可帮你提升 80% 的代码质量
    开发者必须收藏的6款源码搜索引擎
    常用的20个强大的 Sublime Text 插件
    你知道吗?.NET Framework 4.5 五个很棒的特性
  • 原文地址:https://www.cnblogs.com/zhengbin/p/4575512.html
Copyright © 2020-2023  润新知