Java 打印方法不起作用?

Java 打印方法不起作用?,java,jsp,Java,Jsp,这是我的密码 LoginController.java 包mvc.demo.control import java.io.IOException; import java.io.PrintWriter; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import

这是我的密码

LoginController.java

包mvc.demo.control

    import java.io.IOException;
    import java.io.PrintWriter;
    import javax.servlet.RequestDispatcher;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    import mvc.demo.model.Authenticate;


    public class LoginController extends HttpServlet {
        private static final long SerialVersionUID=1L;

        public LoginController()
        {
            super();
        }

        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp)
                throws ServletException, IOException {
            String s1=req.getParameter("username");
            String s2=req.getParameter("password");
            RequestDispatcher rd=null;
            Authenticate au=new Authenticate();
            String result=au.authorise(s1, s2);
            if(result.equals("success"))
            {
                rd=req.getRequestDispatcher("/success.jsp");    
            }
            else
            {
               //This is the point where i try to print error message on jsp.
                PrintWriter out = resp.getWriter(  );
                out.print("Sorry UserName or Password Error!");
                rd=req.getRequestDispatcher("/login.jsp");  
                rd.include(req, resp);  
            }
            rd.forward(req, resp);
        }   
    }
login.jsp

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>Login Page</title>
    </head>
    <body>
        <form method="post" action="LoginController" >  
        UserName:   <input type="text" name="username"><BR><BR>
        PassWord:   <input type="password" name="password"><BR><BR>
                    <input type="submit" />   
        </form>
    </body>
    </html>

登录页面
用户名:

密码:

请检查loginController类的else块,我正在尝试在jsp文件上打印错误消息,当前“out.print”方法无法在我的login.jsp文件上反映。
请帮助我对这个问题进行排序,谢谢。您可以在请求属性中设置错误消息,并可以在JSP中获取它

String errorMsg = "UserName or Password is invalid !";
req.setAttribute("errorMsg", errorMsg);
req.getRequestDispatcher("/login.jsp").forward(req, res);
现在打开JSP

<h2>${errorMsg}</h2>  // Print wherever you need it  
${errorMsg}//在需要的地方打印

您可以在请求属性中设置错误消息,并可以在JSP中获取它

String errorMsg = "UserName or Password is invalid !";
req.setAttribute("errorMsg", errorMsg);
req.getRequestDispatcher("/login.jsp").forward(req, res);
现在打开JSP

<h2>${errorMsg}</h2>  // Print wherever you need it  
${errorMsg}//在需要的地方打印

如果您想在Jsp中打印错误消息,并首先在请求中设置错误消息

        req.setAttribute("msg","error msg configure here");
现在,您可以通过使用EL表达式在jsp中获得相同的结果

   ${msg} 
或者您可以通过使用脚本语言获得它

 <%Object obj=request.getAttribute("msg");%>

将Obj键入字符串并使用此命令打印

             <%=str%>


注意:-建议使用El表达式。

如果您想在Jsp中打印错误消息并首先在请求中设置错误消息

        req.setAttribute("msg","error msg configure here");
import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import mvc.demo.model.Authenticate;


public class LoginController extends HttpServlet {

    private static final long SerialVersionUID=1L;

    public LoginController()
    {
        super();
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {

        String s1=req.getParameter("username");
        String s2=req.getParameter("password");
        RequestDispatcher rd=null;

        Authenticate au=new Authenticate();
        String result=au.authorise(s1, s2);

        if(result.equals("success"))
        {
            rd=req.getRequestDispatcher("/success.jsp");

//The error was with this line
            rd.forward(req, resp);
        }
        else
        {

            PrintWriter out = resp.getWriter(  );
            out.print("Sorry UserName or Password Error!");
            rd=req.getRequestDispatcher("/login.html");  
            rd.include(req, resp);  

        }

    }

}
现在,您可以通过使用EL表达式在jsp中获得相同的结果

   ${msg} 
或者您可以通过使用脚本语言获得它

 <%Object obj=request.getAttribute("msg");%>

将Obj键入字符串并使用此命令打印

             <%=str%>


注意:-建议使用El表达式。我无法在代码中看到out.close()。最后必须关闭PrintWriter对象。

我看不到代码中的.close()。最后必须关闭PrintWriter对象。

首先,为什么需要在JSP上写任何东西,如果需要传递任何数据,可以以属性的形式设置它们,并可以在JSPrd=req.getRequestDispatcher(“/login.JSP”)中访问它们;再次在else块中检查这一行。我不知道在这一行之后OB将如何维护谢谢你的建议,但我想知道out.print()方法是如何工作的@Neerajthank you rehan您帮助我解决了这个问题。现在一切正常。首先,为什么您需要在JSP上写任何东西,如果您需要传递任何数据,您可以以属性的形式设置它们,并可以在JSPrd=req.getRequestDispatcher(“/login.JSP”)中访问它们;再次在else块中检查这一行。我不知道在这一行之后OB将如何维护谢谢你的建议,但我想知道out.print()方法是如何工作的@谢谢你,热翰,你帮我解决了这个问题,现在一切正常
import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import mvc.demo.model.Authenticate;


public class LoginController extends HttpServlet {

    private static final long SerialVersionUID=1L;

    public LoginController()
    {
        super();
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {

        String s1=req.getParameter("username");
        String s2=req.getParameter("password");
        RequestDispatcher rd=null;

        Authenticate au=new Authenticate();
        String result=au.authorise(s1, s2);

        if(result.equals("success"))
        {
            rd=req.getRequestDispatcher("/success.jsp");

//The error was with this line
            rd.forward(req, resp);
        }
        else
        {

            PrintWriter out = resp.getWriter(  );
            out.print("Sorry UserName or Password Error!");
            rd=req.getRequestDispatcher("/login.html");  
            rd.include(req, resp);  

        }

    }

}