AJAX学习笔记4解决乱码问题

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响应");
    }
}
相关推荐
浔溺6 分钟前
al+大数据每日学习笔记28
笔记·学习
FakeOccupational2 小时前
【github 有趣项目】OpenPLC: 支持通用硬件的开源 PLC 软件平台‌
笔记
xian_wwq8 小时前
【学习笔记】-深度认知系列-第2讲-大模型到底是什么?——拆解“参数、训练、推理”
笔记·学习·深度认知
lzhdim9 小时前
12、JavaScript常见的内存泄露问题 - JavaScript学习系列文章
开发语言·前端·javascript·学习·ecmascript
Oll Correct10 小时前
Adobe illustrator 案例九:百宝箱图标绘制
笔记·ui·adobe·illustrator
那年窗外下的雪.10 小时前
AIDC 学习日志|第 15 天|EVPN 多归属故障收敛与撤销机制
网络·学习·php
M78佐菲11 小时前
Linux学习笔记:进程
linux·笔记·学习·算法
我命由我1234513 小时前
人脸识别 - 勒克斯(光线照射到物体表面上的明亮程度)
android·java·学习·java-ee·人脸识别·学习方法·android runtime
lv__pf13 小时前
ajax的使用、json、jquery
ajax·json·jquery
乐橙开放平台14 小时前
养老 SaaS 笔记:setMessageCallback 事件桥接 + msgType 映射 P0/P1,先 ACK 再分流值班流
笔记·物联网·音视频·智能家居