当我';我使用RequestDispatcher,而不是处理JSP的内容,JSP页面作为一个整体呈现在输出上
当我调用RequestDispatcher,而不是处理请求时,JSP页面本身被呈现为输出…JSP内容出现在“accountcreated”行之后 //Servlet块当我';我使用RequestDispatcher,而不是处理JSP的内容,JSP页面作为一个整体呈现在输出上,jsp,servlets,Jsp,Servlets,当我调用RequestDispatcher,而不是处理请求时,JSP页面本身被呈现为输出…JSP内容出现在“accountcreated”行之后 //Servlet块 if(i==1){ PrintWriter pw = response.getWriter(); pw.println("Account Created!!"); RequestDispatcher rd = request.getRequestDispatc
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
内容类型,因此webbrowser会将所有内容解释为纯文本
按照如下方式重写该servlet块,以使JSP正确地完成其工作:
if (i == 1) {
request.getRequestDispatcher("Login.jsp").forward(request, response);
}
另见:
- -包含正确使用servlet的Hello World示例
set
response.setContentType(“text/html”)代码>它应该适合您。:) @BalusC…您能告诉我为什么在这种情况下include不起作用吗?因为JSP无法设置正确的text/html
内容类型。阅读include()
的javadoc:毕竟,您只是使用了将控件转发到JSP的错误方法。include()
不存在,您根本不应该在servlet中获得响应编写器,这不是servlet的责任。