当前位置: 首页 > 知识库问答 >
问题:

JSP:登录页到servlet到登录页消息传递

华坚成
2023-03-14

我希望我的这个登录页面加载两次,即第一次用户输入username和password,然后从servlet获得响应,然后它将被重定向到带有“messages”的登录jsp页面。

我有两个按钮用于登录和注销。这个脚本可以像我试过的那样通过使用count变量加载两次吗?任何其他方法也将是首选。

附注:我试过使用getAttributesetAttribute但它们不起作用。

if(userExists) {
    // check if password matches username or not
    if (pwd.equals(rs.getString("password"))) {
        System.out.println("Login Successful");
        message = "ValidUser";
    } else {
        message = "Invalid Password";
        System.out.println("Invalid Password from userExists");
    }
} else {
    message = "Invalid Username";
    System.out.println("Invalid Username");
}
request.getSession().setAttribute("message", message);
request.getSession().setAttribute("count", count); // count = 1;
response.sendRedirect(dest);  // dest ==> same login.jsp page

login.jsp:-

<script type="text/javascript">
    var msg = <%= request.getAttribute("message") %>;
    var cnt = <%= request.getAttribute("count") %>;
    function log() {
        if (cnt != 1) {
            // document.userlogin.login.type = "submit";
            alert("Form Submitted");
            alert("count is " + cnt);
            alert("msg = " + msg);
        } else {
            document.userlogin.login.type = "button";
            if (msg == "ValidUser") {
                document.userlogin.login.disabled = true;
                document.userlogin.logout.disabled = false;
            } else if (msg == "Invalid Password") {
                alert("Invalid Password");
                document.userlogin.userpass.focus();
            } else if (msg == "Invalid Username") {
                alert("Invalid Username/ Please register and then login");
                document.userlogin.username.focus();
            } else {
                alert("msg = " + msg);
            }
        }
    }
</script>

<form name="userlogin" method="POST" action="../Login" onload="log();" >

共有1个答案

别烨熠
2023-03-14

我看到的一个问题是,在.jsp页面中,您正在request对象中查找messagecount属性,这些属性实际上存在于session中,而不存在于request中。因此更改以下内容:

var msg = '<%= request.getAttribute("message") %>'; // Here session needs to be checked
var cnt = '<%= request.getAttribute("count") %>';  // Here session needs to be checked

从JSP中的隐式会话对象获取属性。

var msg = '<%= session.getAttribute("message")%>';
var cnt = parseInt(<%= session.getAttribute("count")%>);

另一个问题:只能在登录成功后启动会话,以便在每个页面检查用户是否有效一旦用户向服务器发出请求,就会创建新的会话(如果上一个会话不存在)。因此无法阻止会话的创建。

此外,如果登录失败,您可以使用会话进行几个googd操作,例如,您可以在会话中存储登录尝试次数,并在检查登录信息之前将其与允许的最大登录尝试次数进行比较,从而限制用户在几次失败后的最大登录尝试次数。

 类似资料:
  • 我正在尝试用JSP和Servlet实现一个简单的登录页面示例。下面是我的servlet代码;

  • 记录器文件中的日志- org.springframework.Security.Access.event.loggerlistener-安全授权失败,原因是:org.springframework.Security.Access.accessdeniedexception:访问被拒绝;通过身份验证的主体:org.springframework.security.authentication.ano

  • 我现在一直在努力使用我的登录页面来让组件呈现Loggedin组件。我的前端是Reactjs,后端是NodeJS。我对nodejs、expression和react都是新手。 在loginform组件上,我使用fetch进行了一次post,它将用户名和密码传递给后端的相应endpoint。没问题。在后端,它读取我存储用户(不使用任何数据库)的jsonfile来查找匹配项,如果用户名和密码都匹配,则它

  • 本文向大家介绍JSP+Servlet+JavaBean实现登录网页实例详解,包括了JSP+Servlet+JavaBean实现登录网页实例详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JSP+Servlet+JavaBean实现登录网页的方法。分享给大家供大家参考。具体如下: 这里涉及到四个文件: 1. 登录页面:login.html 2. 登录成功欢迎页面:login_succes

  • 我使用的是Spring Security 4.1.1,但我遇到了一个问题:我试图访问URL,应用程序会重定向到登录页面。到现在为止,一直都还不错。 但是,成功登录后,应用程序会再次将我重定向到登录页面,并且不会创建任何会话,因此即使尝试直接访问URL(在URL栏中键入),应用程序也会重定向到登录页面。 有一些URL我必须要求登录才能访问它们。其他的,我可以访问无需身份验证。这些我不需要验证的URL

  • 我想用selenium登录这个网页。我尝试了selenium的find_element_by_,并使用浏览器中的检查元素。但是我无法登录。我在搜索id、名称、类名,这样我就可以用send_keys传递数据,但是没有做到这些。有人能帮助我提供一些代码来将数据推送到所需的字段吗?谢谢。这就是我到目前为止所做的。 在此之后,我试图点击按钮登录使用 但它失败了。它给出了无法找到“登录”的错误。由于默认情况