我想创建一个登录页面,当用户选择记住用户名或记住我复选框时,应该生成一个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();
}
}
}
%>
答案 0 :(得分:1)
你不应该在JSP中做这种事情。您应该在“控制器”servlet中使用它,然后将结果转发到JSP以(仅)格式化HTML响应。
我认为你的问题很可能与此有关。具体来说,我怀疑在scriptlet代码执行时已经提交了响应。这意味着您的response.addCookie(...);
通话为时已晚,无法在响应中添加SetCookie标头。
您应该能够通过在他们离开服务器时或当他们到达您的浏览器时转储响应标头来确认这一点...或者(通过查看浏览器cookie商店)(不那么直接)。
答案 1 :(得分:0)
几乎所有关于JSP的入门书或教程都会包含你想要的所有内容的例子。 任何合理的最新版本也会告诉你在JSP中使用Java代码确实非常糟糕,只是不要这样做。 改为使用JSTL。