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

  • 相关阅读:
    利用jquery获取html中被选中的input的值
    获取表单选中的值(利用php和js两种方式)
    复习
    Ajax请求中的async:false/true的作用
    Jquery
    C#创建控制台项目引用Topshelf的方式,部署windows服务。
    你循环的时候就可以给他们赋值了,那么就不用addClass,再根据类选择器处理,代码能一气呵成就别写成两段了
    SQL server 数据库中插入中文变???格式乱码的问题另一种容易忽略的情况(C#操作dapper)
    SQL 两个表有关联,通过其中一个表的列,更新另一个表的列。
    SQL server 存储过程中 列传行
  • 原文地址:https://www.cnblogs.com/fcbmers/p/5357244.html
Copyright © 2011-2022 走看看