2、使用Cookie保存上次访问的用户名。 1)当用户第一次登陆(创建一个servlet作为登录页)时,如果选中“记住我”,将用户名(无格式要求,任意字符,下同)写入一个Cookie对象,第二次打开页面时,在编辑框中自动显示上次登录的用户名;
时间: 2024-05-14 09:14:17 浏览: 14
2)如果用户没有选中“记住我”,则不会写入Cookie对象,下次打开页面时,编辑框为空。代码如下:
```
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取用户名和密码
String username = request.getParameter("username");
String password = request.getParameter("password");
// 判断是否选中了“记住我”,如果是,则写入Cookie对象
if(request.getParameter("rememberMe") != null) {
Cookie cookie = new Cookie("username", username);
cookie.setMaxAge(60 * 60 * 24 * 30); // 设置Cookie的有效期为30天
response.addCookie(cookie);
}
// 处理登录逻辑,省略代码
// 返回登录页面,同时将上次登录的用户名写入编辑框
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head><title>Login Page</title></head>");
out.println("<body>");
out.println("<form action=\"LoginServlet\" method=\"post\">");
out.println("Username: <input type=\"text\" name=\"username\" value=\"" + getSavedUsername(request) + "\"/><br/>");
out.println("Password: <input type=\"password\" name=\"password\"/><br/>");
out.println("<input type=\"checkbox\" name=\"rememberMe\" value=\"true\"> Remember me<br/>");
out.println("<input type=\"submit\" value=\"Login\"/>");
out.println("</form>");
out.println("</body>");
out.println("</html>");
}
// 获取上次保存的用户名
private String getSavedUsername(HttpServletRequest request) {
Cookie[] cookies = request.getCookies();
if(cookies != null) {
for(Cookie cookie : cookies) {
if(cookie.getName().equals("username")) {
return cookie.getValue();
}
}
}
return "";
}
```