一、原因分析
1、查看Cookie是否真的被清除掉了
2、原来是浏览器设置了自动填充密码
二、代码展示:
虽然这个地方清除了,但是由于某些浏览器设置了,自动填充账户名密码,造成cookie没有删除的假像。
全部逻辑代码:
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
String remember = request.getParameter("remember");
UserServiceIml service = new UserServiceIml();
boolean flag = service.login(username, password);
if (flag) {
//创建cookie对象
Cookie cookie_username = new Cookie("username", username);
Cookie cookie_password = new Cookie("password", password);
// 判断用户是否勾选
if (remember != null) {
// 设置cookie存活时间
cookie_username.setMaxAge(60 * 60 * 24);
cookie_password.setMaxAge(60 * 60 * 24);
} else {
cookie_username.setMaxAge(0);
cookie_password.setMaxAge(0);
}
// 发送cookie
response.addCookie(cookie_username);
response.addCookie(cookie_password);
HttpSession session = request.getSession();
// 把username发送到session域中
session.setAttribute("username", username);
// 重定向到/brand.jsp页面
response.sendRedirect("/filter/brand.jsp");
} else {
request.setAttribute("msg", "用户名或密码错误");
// 请求转发
request.getRequestDispatcher("login.jsp").forward(request, response);
}
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}