我后端Servlet的代码是:
package com.test01.javaweb01;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class HelloServlet04 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("重写的doGet()方法");
PrintWriter printWriter = resp.getWriter();
printWriter.print("重写的doGet()方法");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("重写的doPost()方法");
}
}
前端显示的是:
应该是编码的问题,我尝试修改一下数据类型和编码:
错误解决。
1.设置发送的浏览器的内容是UTF-8编码的。
package com.test01.javaweb01;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class HelloServlet04 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setCharacterEncoding("UTF-8");
System.out.println("重写的doGet()方法");
PrintWriter printWriter = resp.getWriter();
printWriter.print("重写的doGet()方法");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html; charset=UTF-8");
System.out.println("重写的doPost()方法");
}
}
运行结果:
没有管浏览器用的是哪种编码,所以当浏览器的显示编码方式不是UTF-8的时候,就会看到乱码,需要手动再进行一次设置。
2.现在不仅发送到浏览器的内容会使用UTF-8编码,而且还通知浏览器使用UTF-8编码方式进行显示。即:服务端用utf编码,并且告诉浏览器用utf-8的编码显示
package com.test01.javaweb01;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class HelloServlet04 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// resp.setCharacterEncoding("UTF-8");
resp.setContentType("text/html; charset=UTF-8");
System.out.println("重写的doGet()方法");
PrintWriter printWriter = resp.getWriter();
printWriter.print("重写的doGet()方法");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
}
这两种方式都需要在response.getWriter调用之前执行才能生效。
成功!