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();
}
}
}
%>
# 1 楼答案
您不应该在JSP中执行此类操作。您应该在一个“控制器”servlet中使用DoIt,然后将结果转发给JSP,以(仅仅)格式化HTML响应
我认为你的问题很可能与此有关。具体地说,我怀疑在scriptlet代码执行时响应已经提交。这意味着您的
response.addCookie(...);
调用将太晚,无法向响应中添加SetCookie头当响应头离开服务器或到达浏览器时,您应该能够通过转储响应头来确认这一点。。。或者(不那么直接地)通过查看浏览器cookie存储
# 2 楼答案
几乎所有关于JSP的介绍性书籍或教程都会包含您想要的所有示例。 任何一个合理的最新版本都会告诉您,在JSP中使用Java代码确实非常糟糕,只是不要这样做。 改用JSTL