2011-03-01 39 views
0

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

我写了前面的代码来合并功能,但在测试页面时,每次登录页面加载时用户都必须重新输入用户名。我无法找出问题的原因,有人可以帮助我吗?

<% 
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(); 
     } 
    } 
} 
%> 
+0

请格式化你的队友!没有人可以阅读它! – mixkat 2011-03-01 06:46:57

回答

1

你不应该在JSP中做这种东西。您应该在“控制器”servlet中使用它,然后将结果转发给JSP(仅)格式化HTML响应。

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

您应该能够通过在响应头离开服务器时或当它们到达浏览器时或通过在浏览器cookie存储区中查看,来确认这一点。

0

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