tomcat版本不同,doget方法内的中文乱码处理方式也不同,下面看实例。
1.前端代码:
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="UTF-8">
<title>test</title>
</head>
<body>
<form action="RequestParamsServlet" method="post">
用户名:<input name="username" type="text">
密码:<input name="password" type="text">
爱好:
<input type="checkbox" name="hobby" value="运动">运动
<input type="checkbox" name="hobby" value="游泳">游泳
<input type="checkbox" name="hobby" value="打乒乓球">打乒乓球
<input type="submit">
</form>
</body>
</html>
前端显示:
2.后台代码:
2.1 tomcat 7实例
(没有对servlet.xml进行修改,默认编码为ISO-8859-1,doget需手动转码)
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet(
urlPatterns = "/RequestParamsServlet"
)
public class RequestParamsServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//设置request对象的解码方式
request.setCharacterEncoding("utf-8");
//设置response返回输出的编码方式
response.setContentType("text/html;charset=utf-8");
String name = request.getParameter("username");
String password = request.getParameter("password");
System.out.println("用户名:" + name);
System.out.println("密 码:" + password);
PrintWriter out = response.getWriter();
out.println("用户名:" + name);
out.println("密 码:" + password);
// 获取参数名为“hobby”的值
String[] hobbys = request.getParameterValues("hobby");
System.out.print("爱好:");
out.println("爱好:");
for (int i = 0; i < hobbys.length; i++) {
System.out.print(hobbys[i] + ",");
out.println(hobbys[i] + ",");
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//设置response返回输出的编码方式
response.setContentType("text/html;charset=utf-8");
String name=new String(request.getParameter("username").getBytes("ISO-8859-1"), "UTF-8");
String password=new String(request.getParameter("password").getBytes("ISO-8859-1"), "UTF-8");
System.out.println("用户名:" + name);
System.out.println("密 码:" + password);
PrintWriter out = response.getWriter();
out.println("用户名:" + name);
out.println("密 码:" + password);
// 获取参数名为“hobby”的值
String[] hobbys = request.getParameterValues("hobby");
System.out.print("爱好:");
out.println("爱好:");
for (int i = 0; i < hobbys.length; i++) {
hobbys[i]=new String(hobbys[i].getBytes("ISO-8859-1"),"UTF-8");
System.out.print(hobbys[i] + ",");
out.println(hobbys[i] + ",");
}
}
}
get提交执行结果:
2.2 tomcat 9实例
(没有对servlet.xml进行修改,默认编码为UTF-8,doget无需转码)
package org.hc.maven.testnew;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet(
urlPatterns = "/RequestParamsServlet"
)
public class RequestParamsServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//设置request对象的解码方式
request.setCharacterEncoding("utf-8");
//设置response返回输出的编码方式
response.setContentType("text/html;charset=utf-8");
String name = request.getParameter("username");
String password = request.getParameter("password");
System.out.println("用户名:" + name);
System.out.println("密 码:" + password);
PrintWriter out = response.getWriter();
out.println("用户名:" + name);
out.println("密 码:" + password);
// 获取参数名为“hobby”的值
String[] hobbys = request.getParameterValues("hobby");
System.out.print("爱好:");
out.println("爱好:");
for (int i = 0; i < hobbys.length; i++) {
System.out.print(hobbys[i] + ",");
out.println(hobbys[i] + ",");
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//设置response返回输出的编码方式
response.setContentType("text/html;charset=utf-8");
String name = request.getParameter("username");
String password = request.getParameter("password");
System.out.println("用户名:" + name);
System.out.println("密 码:" + password);
PrintWriter out = response.getWriter();
out.println("用户名:" + name);
out.println("密 码:" + password);
// 获取参数名为“hobby”的值
String[] hobbys = request.getParameterValues("hobby");
System.out.print("爱好:");
out.println("爱好:");
for (int i = 0; i < hobbys.length; i++) {
System.out.print(hobbys[i] + ",");
out.println(hobbys[i] + ",");
}
}
}
get提交执行结果:
均无中文乱码