對於運行在Tomcat上的註冊頁面,通過提交註冊表單;獲取註冊頁面提交的“中文”信息,在控制中會產生“中文亂碼”
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>註冊頁面</title>
</head>
<body>
<form action="/Servlet/RequestDemo7" method="post">
<input type="text" placeholder="請輸入用戶名" name="username"><br>
<input type="text" placeholder="請輸入密碼" name="password"><br>
<input type="checkbox" name="hobby" value="game">遊戲
<input type="checkbox" name="hobby" value="study">學習
<br>
<input type="submit" value="註冊"><br>
</form>
</body>
</html>
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.util.Map;
import java.util.Set;
@WebServlet("/RequestDemo7")
public class RequestDemo7 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//獲取請求參數username
String username = request.getParameter("username");
System.out.println(username);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
}
解決辦法:
- 中文亂碼問題:
①、get方式:tomcat 8 已經將get方式亂碼問題解決了
②、post方式:會亂碼
解決:在獲取參數前,設置request的編碼request.setCharacterEncoding(“utf-8”);
//設置流的編碼
request.setCharacterEncoding("utf-8");
//獲取請求參數username
String username = request.getParameter("username");
System.out.println(username);