一切正常为什么RequestDispatcher显示页面的源代码?
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
String uName=req.getParameter("uEmail");
String uPass=req.getParameter("uPass");
try{
DBConnection con=new DBConnection();
if(con.login(uName, uPass)){
HttpSession on = req.getSession();
on.setAttribute("u_id", uName);
res.sendRedirect("dashboard.jsp");
}
else{
RequestDispatcher dis= getServletContext().getRequestDispatcher("/login.jsp");
PrintWriter write = res.getWriter();
write.println("Wrong Username or Passowrd");
dis.include(req, res);
}
}catch(ClassNotFoundException | SQLException e){}
}
}
页面重定向罚款到给定的网址/login.jsp
,也显示错误信息,但为什么作为源代码?
Wrong Username or Passowrd
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<form action="LoginServlet" method="POST" />
<input type="text" name="uEmail" />
<br /><br />
<input type="text" name="uPass" />
<br /><br />
<input type="Submit" name="Register" value="Register" />
<br /><br />
</form>
</body>
</html>
直接链接到login.jsp
工作正常。
4条答案
按热度按时间pxyaymoc1#
来自http://docs.oracle.com/javaee/6/api/javax/servlet/RequestDispatcher.html包含(javax.servlet.ServletRequest、javax.servlet.ServletResponse)
Request Dispatcher的include方法获取资源的内容,这就是为什么要在浏览器中获取源代码。
我认为您要做的是将请求转发到login.jsp,因此使用请求调度程序的forward方法。
正如@JBNizet在他的评论中提到的,由于您来自Servlet的消息,HTML将是无效的。
holgip5t2#
在
dis.include(req,res);
之前添加此行res.setContentType("text/html);
r6l8ljro3#
当我使用RequestDispacther方法并尝试返回和字符串消息沿着html页面时,我也遇到了同样的问题,然后我发现您必须将某种标记放在字符串消息中,如
然后使用include方法如果我的代码
我把它改成了“
“
gr8qqesn4#
您需要设置响应的内容类型。
在
doPost
方法中添加以下行。希望对你有用!!