servlet获取后台数据乱码处理
1、第一步:新建一个javaweb项目。
打开myeclipse file --》new--》web project
具体操作如下图所示:




2、第二步:搭建servlet开发环境。
新建一个servlet UserServlet.java,index.jsp在web.xml中配置servlet
代码如下:
package com.test.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class UserServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String sex = request.getParameter("sex");
String[] bobby = request.getParameterValues("bobby");
System.out.println("性别 :"+sex);
for (int i = 1; i <= bobby.length; i++) {
System.out.println("爱好"+i+" :"+bobby[i-1]);
}
}
}




3、第三步:问题分析,解决思路。
1、乱码产生原因是get请求在前端处理时将中使用ISO-8859-1进行编码而java文件和jsp文件一般都是使用UTF-8编码,如下图1所示
2、确认了问题解决起来也就简单,只要使用对应的编码对其解码就可以解决此问题。


4、第四步:解决方案1在后台使用ISO-8859-1解码。
具体实现代码如下所示:
package com.test.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class UserServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String sex = request.getParameter("sex");
String[] bobby = request.getParameterValues("bobby");
System.out.println("性别 :"+new String(sex.getBytes("ISO-8859-1"),"utf-8"));
for (int i = 1; i <= bobby.length; i++) {
System.out.println("爱好"+i+" :"+new String(bobby[i-1].getBytes("ISO-8859-1"),"utf-8"));
}
}
}


5、第五步:使用post方式提交表单。
<form action="/servlet/userServlet.do" method="post">
爱好1:<input type="text" name="bobby"><br/>
爱好2:<input type="text" name="bobby"><br/>
爱好3:<input type="text" name="bobby"><br/>
爱好4:<input type="text" name="bobby"><br/>
性别:<input type="text" name="sex"><br/>
<input type="submit" value="提交">
</form>


6、第六部:传输之前使用编码。
1、js前端编码
encodeURI 方法 编码
decodeURI 方法 解码
2、java后台编码
import java.net.URLDecoder;
import java.net.URLEncoder;
//URLEncoder.encode("乱码","UTF8");编码
//URLDecoder.decode("乱码","UTF-8")解码