JSP 显示页面的源代码Java Servlet

23c0lvtd  于 2022-12-16  发布在  Java
关注(0)|答案(4)|浏览(120)

一切正常为什么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工作正常。

pxyaymoc

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将是无效的。

holgip5t

holgip5t2#

dis.include(req,res);之前添加此行res.setContentType("text/html);

r6l8ljro

r6l8ljro3#

当我使用RequestDispacther方法并尝试返回和字符串消息沿着html页面时,我也遇到了同样的问题,然后我发现您必须将某种标记放在字符串消息中,如
然后使用include方法如果我的代码

out.println("Terms & Condition not accepted");
RequestDispatcher rd = request.getRequestDispatcher("index.html");
rd.include(request, response);

我把它改成了“

out.println("<h1>Terms & Conditions not accepted </h1>")
RequestDispatcher rd = request.getRequestDispatcher("index.html");
            rd.include(request, response);

gr8qqesn

gr8qqesn4#

您需要设置响应的内容类型。
doPost方法中添加以下行。

response.setContentType("text/html;charset=UTF-8");

希望对你有用!!

相关问题