Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
RequestDispatcher显示页面';Java Servlet的源代码_Java_Jsp_Servlets - Fatal编程技术网

RequestDispatcher显示页面';Java Servlet的源代码

RequestDispatcher显示页面';Java Servlet的源代码,java,jsp,servlets,Java,Jsp,Servlets,其他方面一切正常为什么RequestDispatcher显示页面的源代码? public class LoginServlet extends HttpServlet { private static final long serialVersionUID = 1L; @Override protected void doPost(HttpServletRequest req, HttpServletResponse res) throws Ser

其他方面一切正常为什么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){}

    }
}
页面重定向到给定的url
/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>
错误的用户名或密码
JSP页面






直接链接到
login.jsp
效果很好。

from,javax.servlet.ServletResponse)

请求分派器的include方法获取资源的内容,这就是您在浏览器中获取源代码的原因

我认为您要做的是将请求转发到login.jsp,因此请使用请求调度器的转发方法


正如@JBNizet在他的评论中提到的,由于您来自Servlet的消息,HTML将无效。

您需要设置响应的内容类型

doPost
方法中添加以下行

response.setContentType("text/html;charset=UTF-8");
希望它对你有用

dis.include(请求、回复)之前

添加此行
res.setContentType(“text/html”);
it

,因为“用户名或密码错误”“在html标记之前打印,使html无效?@JBNizet如何使用Dispatcher?我正在其他测试应用程序上使用,即使是相同的调度程序代码也可以正常工作。您所拥有的很好,只是在包含JSP之前不应该向响应中写入文本。这样做,您将生成无效的HTML。将错误消息存储在一个请求属性中,让JSP代码从该属性中获取错误消息,并在页面内打印它(必须打印的位置)。没有理由包括:您应该转发。@JBNizet我不明白为什么其他应用程序可以在相同的过程中正常工作?@JBNizet感谢那些在
login.html
上的应用程序,这就是它们正常工作的原因?正如链接的javadoc所说,
RequestDispatcher.include
仍然应该执行jsp,而不是显示它的源代码:您应该添加一些解释,说明为什么您的建议可以解决问题,等等。默认情况下,MIME(又名内容类型)设置为“text/plain”,您必须根据您希望在客户端(浏览器)上显示的文件(或内容)进行更改。