zoukankan      html  css  js  c++  java
  • javaweb怎么过滤乱码

    package xtu.hl.filter;

    import java.io.UnsupportedEncodingException;
    import java.util.Map;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletRequestWrapper;

    /**
    * 对GET请求参数加以处理!
    *
    */
    public class GetRequest extends HttpServletRequestWrapper {
    private HttpServletRequest request;
    private String charset;

    public GetRequest(HttpServletRequest request, String charset) {
    super(request);
    this.request = request;
    this.charset = charset;
    }
    @Override
    public String getParameter(String name) {
    String value = request.getParameter(name);
    if (value == null) return null;
    try {
    return new String(value.getBytes("ISO-8859-1"), charset);
    } catch (UnsupportedEncodingException e) {
    throw new RuntimeException(e);
    }
    }
    @SuppressWarnings({ "unchecked", "rawtypes" })
    @Override
    public Map getParameterMap() {
    Map<String, String[]> map = request.getParameterMap();
    if (map == null)
    return map;
    // 遍历map,对每个值进行编码处理
    for (String key : map.keySet()) {
    String[] values = map.get(key);
    for (int i = 0; i < values.length; i++) {
    try {
    values[i] = new String(values[i].getBytes("ISO-8859-1"),
    charset);
    } catch (UnsupportedEncodingException e) {
    throw new RuntimeException(e);
    }
    }
    }
    return map;
    }
    @Override
    public String[] getParameterValues(String name) {
    String[] values = super.getParameterValues(name);
    for (int i = 0; i < values.length; i++) {
    try {
    values[i] = new String(values[i].getBytes("ISO-8859-1"),
    charset);
    } catch (UnsupportedEncodingException e) {
    throw new RuntimeException(e);
    }
    }
    return values;
    }
    }

    //用一个装饰类

    package xtu.hl.filter;

    import java.io.IOException;

    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.http.HttpServletRequest;

    public class EncodingFilter implements Filter {
    private String charset = "UTF-8";
    @Override
    public void destroy() {
    }
    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
    FilterChain chain) throws IOException, ServletException {
    HttpServletRequest req = (HttpServletRequest) request;
    if (req.getMethod().equalsIgnoreCase("GET")) {
    if (!(req instanceof GetRequest)) {
    req = new GetRequest(req, charset);// 处理get请求编码
    }
    } else {
    req.setCharacterEncoding(charset);// 处理post请求编码
    }
    chain.doFilter(req, response);
    }
    @Override
    public void init(FilterConfig fConfig) throws ServletException {
    String charset = fConfig.getInitParameter("charset");
    if (charset != null && !charset.isEmpty()) {
    this.charset = charset;
    }
    }
    }

  • 相关阅读:
    CVE-2020-0796 SMB远程代码执行漏洞复现
    SMTP用户枚举原理简介及相关工具
    sqli-labs全通关payload
    ASCII码表
    查看GitHub的历史
    npm安装vue创建一个helloworld程序
    JavaWeb12-Session
    JavaWeb11-Cookie
    JavaWeb10-Servlet实现随机产生图片验证码
    JavaWeb09-Servlet实现下载文件
  • 原文地址:https://www.cnblogs.com/fcbmers/p/5357244.html
Copyright © 2011-2022 走看看