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

  • 相关阅读:
    <script>标签的加载解析执行
    百度地图API位置偏移的校准算法
    开源实时消息推送系统 MPush
    开源GIS软件 4
    Bootstrap 只读输入框
    javascript中的后退和刷新
    HTML中的文本框textarea标签
    Spring Boot 特性 —— SpringApplication
    SpringMVC使用POST方法传递数据,却出现Request method 'GET' not supported?
    springboot的登录拦截机制
  • 原文地址:https://www.cnblogs.com/fcbmers/p/5357244.html
Copyright © 2011-2022 走看看