有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用JSP创建登录和welcomenpages

我想创建一个登录页面,当用户选中记住用户名或记住我复选框时,应该生成一个cookie,当选中记住用户名复选框时,它应该存储用户名,选中“记住我”复选框时,它应同时存储用户名和密码,以避免用户返回登录页面时重新键入

我编写了前面的代码以合并功能,但是在测试页面时,用户必须在每次加载登录页面时重新键入用户名。我无法确定问题的原因,有人能帮我解决吗

<%
String userName = request.getParameter("username");
String password = request.getParameter("password");
String rm_me = request.getParameter("rm_me");
String rm_uname = request.getParameter("rm_uname");

if (userName != null && password != null) {
    if (rm_me != null) {
        Cookie ckU = new Cookie("username", userName);
        Cookie ckP = new Cookie("password", password);
        response.addCookie(ckP);
    } else {
        if (rm_uname != null) {
        Cookie ckU = new Cookie("username", userName);
    }
}

Cookie[] cookies = request.getCookies();
if (cookies != null) {
    for (int i = 0; i < cookies.length; i++) {
        if (cookies[i].getName().equals("username")) {
            userName = cookies[i].getValue();
        }
        if (cookies[i].getName().equals("password")) {
            password = cookies[i].getValue();
        }
    }
}
%>

共 (2) 个答案

  1. # 1 楼答案

    您不应该在JSP中执行此类操作。您应该在一个“控制器”servlet中使用DoIt,然后将结果转发给JSP,以(仅仅)格式化HTML响应

    我认为你的问题很可能与此有关。具体地说,我怀疑在scriptlet代码执行时响应已经提交。这意味着您的response.addCookie(...);调用将太晚,无法向响应中添加SetCookie头

    当响应头离开服务器或到达浏览器时,您应该能够通过转储响应头来确认这一点。。。或者(不那么直接地)通过查看浏览器cookie存储

  2. # 2 楼答案

    几乎所有关于JSP的介绍性书籍或教程都会包含您想要的所有示例。 任何一个合理的最新版本都会告诉您,在JSP中使用Java代码确实非常糟糕,只是不要这样做。 改用JSTL