2)登录、注销功能,用户自动登录功能。创建过滤器,用于拦截用户登陆的访问请求,判断请求中是否包含自动登陆Cookie。如果包含,则获取Cookie中存储的信息封装到User对象存入Session域中,完成用户自动登录。代码
时间: 2024-02-25 12:54:23 浏览: 28
好的,下面给出一个简单的Java代码示例,演示如何实现登录、注销和用户自动登录功能。
首先是登录功能的实现:
```java
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
boolean rememberMe = "true".equals(request.getParameter("rememberMe")); // 判断是否勾选了自动登录
// 在后台进行用户信息验证
if (username.equals("admin") && password.equals("123456")) {
// 用户信息验证成功,将用户信息存入Session中
User user = new User(username, password);
request.getSession().setAttribute("user", user);
// 如果勾选了自动登录,则创建一个Cookie保存用户信息
if (rememberMe) {
Cookie cookie = new Cookie("autoLogin", username + ":" + password);
cookie.setMaxAge(7 * 24 * 60 * 60); // 设置Cookie有效期为7天
response.addCookie(cookie);
}
response.sendRedirect("index.jsp"); // 登录成功,跳转到首页
} else {
response.sendRedirect("login.jsp?error=true"); // 登录失败,跳转到登录页面并显示错误信息
}
}
}
```
接下来是注销功能的实现:
```java
public class LogoutServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 将Session中的用户信息清空
request.getSession().removeAttribute("user");
// 删除自动登录Cookie
Cookie[] cookies = request.getCookies();
for (Cookie cookie : cookies) {
if (cookie.getName().equals("autoLogin")) {
cookie.setMaxAge(0);
response.addCookie(cookie);
break;
}
}
response.sendRedirect("login.jsp"); // 注销成功,跳转到登录页面
}
}
```
最后是过滤器的实现,用于拦截用户登录的访问请求并判断是否包含自动登录Cookie:
```java
public class AutoLoginFilter implements Filter {
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
HttpSession session = request.getSession();
// 判断请求中是否包含自动登录Cookie
boolean autoLogin = false;
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (Cookie cookie : cookies) {
if (cookie.getName().equals("autoLogin")) {
autoLogin = true;
String[] user = cookie.getValue().split(":");
String username = user[0];
String password = user[1];
// 将Cookie中存储的用户信息封装到User对象中存入Session域中
User user = new User(username, password);
session.setAttribute("user", user);
break;
}
}
}
// 如果没有自动登录Cookie,则继续执行过滤器链
if (!autoLogin) {
filterChain.doFilter(request, response);
return;
}
// 如果有自动登录Cookie,则直接跳转到首页
response.sendRedirect("index.jsp");
}
}
```
上面的代码只是一个示例,实际应用中还需要根据具体的业务需求进行适当的修改和完善。