2

当我调用 RequestDispatcher 时,不是处理请求,而是将 JSP 页面本身呈现为输出...... JSP 内容出现在“帐户已创建”行之后。

//Servlet 块

if(i==1){
            PrintWriter pw = response.getWriter();
            pw.println("Account Created!!");
            RequestDispatcher rd = request.getRequestDispatcher("Login.jsp");
            rd.include(request, response);
            System.out.println("Record Updated!!!");
        }

//在浏览器上呈现的输出:

Account Created!!

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"   "http://www.w3.org/TR/html4/loose.dtd">
<html>
<link rel="icon" type="image/ico" href="favicon.ico"></link> 
<link rel="shortcut icon" href="favicon.ico"></link>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Login Page</title>
</head>
<body>
<form action="./Authentication" method="post">
    <p>Enter username<input type="text" name="Uname"></p>
    <p>Enter password<input type="password" name="Pword"></p>
    <input type="submit" value="Login"> 
</form>
</body>
</html>
4

2 回答 2

1

您不应在 servlet 中获取编写器,也不应手动向其写入字符串,而应RequestDispatcher#forward()使用include(). 否则,您会阻止 JSP 设置正确的text/html内容类型,因此 Web 浏览器会将所有内容解释为纯文本。

按如下方式重写该 servlet 块,以让 JSP 正常工作:

if (i == 1) {
    request.getRequestDispatcher("Login.jsp").forward(request, response);
}

也可以看看:

于 2012-06-20T12:28:07.313 回答
0

这是因为在将响应发送到浏览器之前,您没有将 contentType 设置为响应。

设置response.setContentType("text/html");它应该适合你。:)

于 2018-06-01T05:25:09.587 回答