要么去掉priterwriter,要么改HTML的编码格式为GBK。
HTML编码格式虽然是utf-8,但是它应该是以系统默认的gbk格式打开的,所以设置utf-8会乱码。
1.请求转发格式(留头不留体,即保留自己的网址,显示其他网址的内容,和request搭配nb)
RequestDispatcher dispatcher=request.getRequestDispatcher("/Success.html");
dispatcher.forward(request,response);
也可以
request.getRequestDispatcher("/Success.html").forward(request,response);
1.去掉priterwriter
我把PrintWriter out=response.getWriter();及相关输出调用注释掉后,转发的html页面没有乱码文字
但有一个问题:PrintWriter out=response.getWriter()方法注释掉后,servlet无法向页面输出
@WebServlet("/LSP")
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
//设置编码方式
// ServletOutputStream out=response.getOutputStream();
//PrintWriter out=response.getWriter();
String name=request.getParameter("username");
String pwd=request.getParameter("password");
if (name.equals("admin")&&pwd.equals("123456")){
RequestDispatcher dispatcher=request.getRequestDispatcher("/Success.html");
dispatcher.forward(request,response);
}
else {
response.sendRedirect("/web3/error.html");
}
String sex=request.getParameter("sex");
// out.println("用户名:"+name);
// out.println("密码:"+pwd);
// out.println("性别:"+sex);
String b[]=request.getParameterValues("hobby");
// out.println("爱好:");
for (int i=0;i<b.length;i++){
// out.println(b[i]+",");
}
2.改HTML的编码格式为GBK
这次我没有把PrintWriter out=response.getWriter()去除而是
@WebServlet("/LSP")
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
//设置编码方式
// ServletOutputStream out=response.getOutputStream();
PrintWriter out=response.getWriter();
String name=request.getParameter("username");
String pwd=request.getParameter("password");
if (name.equals("admin")&&pwd.equals("123456")){
RequestDispatcher dispatcher=request.getRequestDispatcher("/Success.html");
dispatcher.forward(request,response);
}
else {
response.sendRedirect("/web3/error.html");
}
String sex=request.getParameter("sex");
out.println("用户名:"+name);
out.println("密码:"+pwd);
out.println("性别:"+sex);
String b[]=request.getParameterValues("hobby");
out.println("爱好:");
for (int i=0;i<b.length;i++){
out.println(b[i]+",");
}
}
把html文件中的< meta charset=“UTF-8”>改为< meta charset =“GBK”>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="GBK">
<title>请求成功</title>
</head>
<body>
<p>登陆成功</p>
</body>
</html>
HTML编码格式虽然是utf-8,但是它应该是以系统默认的gbk格式打开的,所以设置utf-8会乱码。