Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.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
Java 如何将错误消息打印到用户屏幕而不是JSP中的标准输出?_Java_Jsp_Error Handling - Fatal编程技术网

Java 如何将错误消息打印到用户屏幕而不是JSP中的标准输出?

Java 如何将错误消息打印到用户屏幕而不是JSP中的标准输出?,java,jsp,error-handling,Java,Jsp,Error Handling,我想知道如果用户在JSP中输入了错误的passowrd,如何向用户打印错误消息。鉴于我已经设置了表单并进行了验证,我尝试添加这一检查,但输出会打印到标准的out ie控制台,但是,我希望它打印到用户正在查看的屏幕上。以下是我的身份验证代码: public boolean verify (String username, String password) { if (!password.equals("1234")) { System.out.printl

我想知道如果用户在JSP中输入了错误的passowrd,如何向用户打印错误消息。鉴于我已经设置了表单并进行了验证,我尝试添加这一检查,但输出会打印到标准的out ie控制台,但是,我希望它打印到用户正在查看的屏幕上。以下是我的身份验证代码:

public boolean verify (String username, String password) {

        if (!password.equals("1234")) {
            System.out.println("Wrong password!\n");
            return false;
        } 

        return true;        
    }
EDIT:LoginProcessing.java调用上面的方法并检查布尔值(logedin),如果没有设置,我将执行下面的代码,但它仍然不会打印到用户可以看到的屏幕上

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// skipping initializations for brevity

if (logedin) { 
// do stuff 
}else {
            System.out.println("Wrong password!\n");
            response.sendRedirect("login.jsp");
            return;
        }
    }
编辑2:这是我在login.html中的代码,我在上面的代码中从doPost()方法重定向到它,只是我删除了println()方法


使用JSP登录
请输入您的用户名:
请输入您的密码:
很抱歉错误的用户名或密码
在servlet方法中:

// check the credentials
boolean loggedIn = verify(username, password);

// store the result in a request attribute, so that the JSP can retrieve it
request.setAttribute("loggedIn", loggedIn);

// let a JSP display the result
request.getRequestDispatcher("/loginResult.jsp").forward(request, response);
在JSP中(使用),测试loggedIn请求参数的值:

<c:if test="${loggedIn}">
    Congratulations: you're now logged in.
</c:if>
<c:if test="${!loggedIn}">
    Sorry. Wrong user name or password
</c:if>

祝贺您:您现在已登录。
很抱歉错误的用户名或密码

此方法从何处调用?从servlet?从servlet
doPost()
方法在
HttpResponse#getWriter()
对象中写回消息。@JBNizet Yes,从LoginProcessing.java servlet。@user3218114我在HttpRequest中做了您指示的更改,请查看编辑。我按照您指示做了,但Eclipse抱怨(c:if)是未知标记。并且总是在屏幕上打印错误的密码信息。您是否遵循了我答案中指向JSTL的链接。您是否阅读了该页面,向应用程序添加了适当的jar文件,并向JSP添加了适当的taglib指令?生成的HTML代码是什么样子的?我制作了edit2,并将HTML中的代码包含在希望打印消息的位置。我查看了文档,但想知道是否有一种方法可以在不使用新库的情况下执行相同的操作,因为代码将上载到可能未启用此库的服务器。服务器不需要安装任何库。它必须与任何其他WEB应用程序库一样,包含在您的WEB应用程序的WEB-INF/lib下。是的,你绝对应该使用它。当然,您也可以对Scriptlet执行同样的操作,但是Scriptlet不应该被使用很多年。使用正确的工具。重新阅读我的答案和我的评论,因为除了添加c:if块之外,您没有做任何事情。我将jstl-1.2.jar添加到我的项目的WEB-INF/lib目录中,包括在我的login.jsp中,但我仍然收到“Unknown tab(c:if)”消息。
<c:if test="${loggedIn}">
    Congratulations: you're now logged in.
</c:if>
<c:if test="${!loggedIn}">
    Sorry. Wrong user name or password
</c:if>