AJAX学习笔记3练习_biubiubiu0706的博客-CSDN博客
在Tomcat10来说,AJAX GET或者POST接收响应都不存在乱码问题
对于Tomcat9来说
前端测试代码
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>测试AJAX乱码问题</title>
- </head>
- <body>
- <script type="text/javascript">
- window.onload=function (){
- //GET
- document.getElementById("btn1").onclick=function(){
- var xhr=new XMLHttpRequest();
- xhr.onreadystatechange=function (){
- if(this.readyState==4){
- if(this.status==200){
- document.getElementById("mydiv").innerHTML=this.responseText
- }else{
- alert("请求发送失败")
- }
- }
- }
- var username=document.getElementById("username").value
- xhr.open("get","/ajax/luanma?username="+username,true)
-
- xhr.send()
- }
- //POST
- document.getElementById("btn2").onclick=function(){
- var xhr=new XMLHttpRequest();
- xhr.onreadystatechange=function (){
- if(this.readyState==4){
- if(this.status==200){
- document.getElementById("mydiv").innerHTML=this.responseText
- }else{
- alert("请求发送失败")
- }
- }
- }
- var username=document.getElementById("username").value
- xhr.open("post","/ajax/luanma",true)
- xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded")
- xhr.send("username="+username)
- }
- }
- </script>
-
-
- <input type="text" id="username">
- <button id="btn1">发送AJAX GET请求,测试乱码问题</button>
- <button id="btn2">发送AJAX POST请求,测试乱码问题</button>
-
- <div id="mydiv"></div>
- </body>
- </html>
后端测试代码
- package com.web;
-
- 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;
-
- /**
- * @author hrui
- * @date 2023/9/4 6:02
- */
- @WebServlet("/luanma")
- public class AjaxRequestLuanma extends HttpServlet {
-
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- //接收的中文会不会乱码
- String username = req.getParameter("username");
- System.out.println(username);
- //响应中文会乱码吗
- PrintWriter writer = resp.getWriter();
- writer.print("GET响应");
- }
-
- @Override
- protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- //接收的中文会不会乱码
- String username = req.getParameter("username");
- System.out.println(username);
- //响应中文会乱码吗
- PrintWriter writer = resp.getWriter();
- writer.print("POST响应");
- }
- }
解决方式
- package com.web;
-
- 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;
- import java.sql.ResultSet;
-
- /**
- * @author hrui
- * @date 2023/9/4 6:02
- */
- @WebServlet("/luanma")
- public class AjaxRequestLuanma extends HttpServlet {
-
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- //接收的中文会不会乱码
- String username = req.getParameter("username");
- System.out.println(username);
- //响应中文会乱码吗
- resp.setContentType("text/html;charset=utf-8");
- PrintWriter writer = resp.getWriter();
- writer.print("GET响应");
- }
-
- @Override
- protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- //接收的中文会不会乱码
- req.setCharacterEncoding("utf-8");//解决body体乱码问题
- String username = req.getParameter("username");
- System.out.println(username);
- //响应中文会乱码吗
- resp.setContentType("text/html;charset=utf-8");
- PrintWriter writer = resp.getWriter();
- writer.print("POST响应");
- }
- }