package cn.itcast.chapter09.filter;
import java.io.IOException;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import cn.itcast.chapter09.entity.User;
@WebServlet(name = "LoginServlet",urlPatterns = "/LoginServlet")
public class LoginServlet extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
// 获得用户名和密码
String username = request.getParameter("username");
String password = request.getParameter("password");
// 检查用户名和密码
if ("itcast".equals(username) && "123456".equals(password)) {
// 登录成功
// 将用户状态 user 对象存入 session域
User user = new User();
user.setUsername(username);
user.setPassword(password);
request.getSession().setAttribute("user", user);
// 发送自动登录的cookie
String autoLogin = request.getParameter("autologin");
if (autoLogin != null) {
// 注意 cookie 中的密码要加密
Cookie cookie = new Cookie("autologin", username + "-"
+ password);
cookie.setMaxAge(Integer.parseInt(autoLogin));
cookie.setPath(request.getContextPath());
response.addCookie(cookie);
}
// 跳转至首页
response.sendRedirect(request.getContextPath()+"/index.jsp");
} else {
request.setAttribute("errerMsg", "用户名或密码错误");
request.getRequestDispatcher("/login.jsp")
.forward(request,response);
}
}
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
想问下
基于new bing的解释调写:
这段 Java 代码实现了一个简单的登录功能。对通过 GET 或 POST 请求提交的用户名和密码进行校验,如果匹配成功则将用户信息存入 session 域,并且如果用户选择了自动登录功能,则发送带有加密密码的 Cookie 到浏览器端保存。如果登录失败则返回错误提示信息到 login.jsp 页面,请求转发到登录页面,让用户重新输入用户名和密码。
package cn.itcast.chapter09.filter;
import java.io.IOException;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import cn.itcast.chapter09.entity.User;
// 使用 @WebServlet 注解将该类声明为一个 Servlet,并指定访问路径为 /LoginServlet
@WebServlet(name = "LoginServlet",urlPatterns = "/LoginServlet")
public class LoginServlet extends HttpServlet {
// 处理 GET 请求
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 获取请求参数中的用户名和密码
String username = request.getParameter("username");
String password = request.getParameter("password");
// 检查用户名和密码是否匹配
if ("itcast".equals(username) && "123456".equals(password)) {
// 登录成功
// 创建用户对象并设置属性
User user = new User();
user.setUsername(username);
user.setPassword(password);
// 将用户对象存入 session 域中
request.getSession().setAttribute("user", user);
// 检查是否选择自动登录功能
String autoLogin = request.getParameter("autologin");
if (autoLogin != null) {
// 创建自动登录用的 Cookie
Cookie cookie = new Cookie("autologin", username + "-" + password);
// 设置 Cookie 在客户端保存的时间,单位是秒
cookie.setMaxAge(Integer.parseInt(autoLogin));
// 设置 Cookie 的作用范围为应用程序所在的路径下
cookie.setPath(request.getContextPath());
// 发送 Cookie 给客户端保存
response.addCookie(cookie);
}
// 跳转至首页
response.sendRedirect(request.getContextPath() + "/index.jsp");
} else {
// 登录失败,将错误提示信息存入 request 域中,用于在登录页面中显示
request.setAttribute("errerMsg", "用户名或密码错误");
// 请求转发到登录页面,保留用户输入的用户名和密码,让用户重新登陆
request.getRequestDispatcher("/login.jsp").forward(request,response);
}
}
// 处理 POST 请求
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 由于 POST 和 GET 请求都需要执行同一个逻辑,所以直接调用 doGet 方法进行处理即可
doGet(request, response);
}
}
这是登录用的,如果用户输入的用户名密码是
"itcast"和 "123456"就算登录成功,在session里面的user添加用户名
如果用户勾选了自动登录,那么下面的
Cookie cookie = new Cookie("autologin", username + "-" + password);
cookie.setMaxAge(Integer.parseInt(autoLogin));
cookie.setPath(request.getContextPath());
response.addCookie(cookie);
这些往客户端添加了cookie,记住登录状态
这里编写一段简单的测试代码即可.