当我调用 RequestDispatcher 时,JSP 页面本身不是处理请求,而是被呈现为输出...JSP 内容出现在“Account Created”行之后。
//Servlet block
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>
最佳答案
您不应该在 servlet 中获取 writer,也不应该手动向其中写入字符串,并且应该使用 RequestDispatcher#forward()
而不是 include()
。否则,您将阻止 JSP 设置正确的 text/html
内容类型,因此所有内容都会被网络浏览器解释为纯文本。
按如下方式重写 servlet block ,让 JSP 正确完成其工作:
if (i == 1) {
request.getRequestDispatcher("Login.jsp").forward(request, response);
}
另请参阅:
- Our servlets wiki page - 包含正确使用 servlet 的 Hello World 示例
关于jsp - 当我使用 RequestDispatcher 时,不是处理 JSP 的内容,而是在输出上呈现整个 JSP 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11119519/