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提交執行結果:
均無中文亂碼