关于java web应用程序的凌乱代码

时间:2018-01-22 13:03:29

标签: java

最近,我用tomcat的想法开始我的第一个java web应用程序(Servlet + JSP + MySql),在我完成所有代码部分后,我尝试在应用程序中添加它们之后查询一些数据,当我使用英语,没关系,当我使用中文时,控制台中有乱码,我已经做了一切改变 编码成为" utf-8",但我无法解决,请帮助我!

public String query(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{
    Product product = CommonUtils.toBean(request.getParameterMap(), Product.class);
    product = encoding(product);

    int pageCode = getPageCode(request);
    int pageRecord = 10;


    PageBean<Product> pageBean = productService.query(product, pageCode, pageRecord);

    pageBean.setUrl(getUrl(request));
    System.out.println(pageBean.getUrl());

    request.setAttribute("pageBean",pageBean);
    return "/content.jsp";
}

private Product encoding(Product product) throws UnsupportedEncodingException{
    String name = product.getName();
    if(name != null && name.trim().isEmpty()){
        name = new String(name.getBytes("ISO-8859-1"),"utf-8");
        product.setName(name);
    }
    return product;
}

我查询时的结果是:

/ProductServlet?method=query&barcode=&name=%E5%B8%85&units=&purchasePrice=&salePrice=&inventory=&%E6%90%9C%E7%B4%A2=%E6%8F%90%E4%BA%A4

这个名字是中文,但它变成了凌乱的代码

1 个答案:

答案 0 :(得分:1)

首先:name = new String(name.getBytes("ISO-8859-1"),"utf-8");不应该完成;然后在那一刻之前出现了其他问题。

有以下几点可以设置编码/字符集:

  • 在html <form accept-encoding="UTF-8"...>中表示生成的表单字段值不应为url编码,例如%E5%B8%85
  • request.setEncoding("UTF-8");上告知请求是否采用该编码。
  • 在传出文字的response.setEncoding("UTF-8");上。

有许多技术可以应用,实际上面的设置可以通过多种方式完成,如应用程序的确定,或者在JSP中作为<%@page pageEncoding="UTF-8" %>

如果您使用的是/WEB-INF/web.xml设置,则所有JSP的pageEncoding将为:

<jsp-config>
  <jsp-property-group>
    <url-pattern>*.jsp</url-pattern>
    <page-encoding>UTF-8</page-encoding>
  </jsp-property-group>
</jsp-config>