【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 }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值