1、(1)设计登录页面login.html,点击登录按钮时调用LoginServlet,自动将用户名和密码、登录时间保存到cookie中,设置cookie存活时间为14天; (2)然后在LoginServlet中重定向到ShowUserServlet,在ShowUserServlet中显示登录用户的用户名! (3)把浏览器关闭,直接访问ShowUserServlet,查看是否还能显示用户名!
时间: 2024-03-10 20:46:07 浏览: 21
好的,这是一个关于Java Web开发的问题。针对你的问题,我的回答如下:
1. 首先,我们需要在前端设计好登录页面login.html,包括用户名和密码的输入框以及一个登录按钮。
2. 在点击登录按钮时,前端需要向后台发起请求,请求由LoginServlet处理。LoginServlet需要获取用户名和密码,并进行验证。如果用户名和密码正确,则设置cookie,并将用户名和登录时间保存到cookie中。代码示例:
```java
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
// 验证用户名和密码
if (isValid(username, password)) {
// 设置cookie
Cookie cookie = new Cookie("user", username + "-" + System.currentTimeMillis());
cookie.setMaxAge(14 * 24 * 60 * 60);
response.addCookie(cookie);
// 重定向到ShowUserServlet
response.sendRedirect("ShowUserServlet");
} else {
// 用户名和密码不正确,返回错误信息
response.getWriter().write("用户名或密码错误!");
}
}
private boolean isValid(String username, String password) {
// 验证用户名和密码,这里省略具体实现
return true;
}
```
3. 在ShowUserServlet中,我们需要从cookie中获取保存的用户名和登录时间,并将用户名显示在页面上。代码示例:
```java
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Cookie[] cookies = request.getCookies();
String username = null;
long loginTime = 0;
// 获取cookie中保存的用户名和登录时间
if (cookies != null) {
for (Cookie cookie : cookies) {
if (cookie.getName().equals("user")) {
String[] parts = cookie.getValue().split("-");
username = parts[0];
loginTime = Long.parseLong(parts[1]);
break;
}
}
}
// 显示登录用户的用户名
response.getWriter().write("登录用户:" + username);
}
```
4. 最后,我们需要测试一下是否能够正确地显示登录用户的用户名。我们可以先登录并访问ShowUserServlet,确保可以正确显示用户名。然后关闭浏览器,再次访问ShowUserServlet,确保不能显示用户名,以此验证cookie的有效期是否设置正确。