request.getParameter乱码

来源:互联网 发布:ipadapp下载不了软件 编辑:程序博客网 时间:2024/06/06 06:33

post请求乱码

<form action="/WEB24/encodeServlet" method="post">        <input type="text" name="username">        <input type="submit" value="提交">    </form>

servlet中打印输入内容

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        String str = request.getParameter("username");        System.out.println(str);    }

在输入框中输入中文后,打印结果

哈å

在doGet()方法中加入这一句

request.setCharacterEncoding("UTF-8");
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        request.setCharacterEncoding("UTF-8");        String str = request.getParameter("username");        System.out.println(str);    }

重新输入中文后,打印结果

哈哈

get请求乱码

<form action="/WEB24/encodeServlet" method="get">        <input type="text" name="username">        <input type="submit" value="提交">    </form>

doGet()方法

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        String str = request.getParameter("username");        System.out.println(str);    }

输入中文后打印结果

哈å

在doGet()方法中加入String name = new String(str.getBytes("ISO8859-1"),"UTF-8");

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        String str = request.getParameter("username");        String name  = new String(str.getBytes("ISO8859-1"),"UTF-8");        System.out.println(name);    }

打印结果

哈哈

全局乱码处理 get请求乱码
在每个servlet中处理乱码比较麻烦,所以使用过滤器处理

jsp中使用get请求

<form action="/WEB24/encodeServlet" method="get">        <input type="text" name="username">        <input type="submit" value="提交">    </form>

过滤器

public class EncodeFilter implements Filter{    @Override    public void init(FilterConfig filterConfig) throws ServletException {    }    @Override    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)            throws IOException, ServletException {        HttpServletRequest req = (HttpServletRequest) request;        //当req调用getParameter()方法时,实际调用的是增强类对象的getParameter方法。        EnhanceRequest enhanceRequest = new EnhanceRequest(req);        chain.doFilter(enhanceRequest, response);    }    @Override    public void destroy() {    }    /**     * 装饰着模式     * 增强getparameter()方法     * @author YeLiang     *     */    static class EnhanceRequest extends HttpServletRequestWrapper{        private HttpServletRequest request;        public EnhanceRequest(HttpServletRequest request) {            super(request);            this.request = request;        }        @Override        public String getParameter(String name) {            String parameter = request.getParameter(name);            try {                parameter = new String(parameter.getBytes("iso8859-1"),"UTF-8");            } catch (UnsupportedEncodingException e) {                e.printStackTrace();            }            return parameter;        }    } }

web.xml中的配置

  <filter>    <filter-name>EncodeFilter</filter-name>    <filter-class>com.yeliang.encode.EncodeFilter</filter-class>  </filter>  <filter-mapping>    <filter-name>EncodeFilter</filter-name>    <url-pattern>/*</url-pattern>  </filter-mapping>

servlet中的doGet方法没有做操作

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        String str = request.getParameter("username");        System.out.println(str);    }

打印结果

哈哈
原创粉丝点击