一、环境
见 登录功能实现 一文
二、工程目录
见 登录功能实现 一文。
三、代码编写
1.前端页面_login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>登录</title>
</head>
<body>
<form action="/loginServlet" method="post">
<input type="text" placeholder="请输入用户名" value="${cookie.u.value} name="username"><br>
<input type="password" name="password" placeholder="请输入密码"><br>
<input type="checkbox" name="remember" value="true">记住用户名?
<input type="submit" value="登录">
</form>
</body>
</html>
*这里在密码输入框之后添加了“记住用户名?”的复选框
2.登录的Servlet_LoginServlet
@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//设置字符编码
req.setCharacterEncoding("utf-8");
/*//获取用户名,密码
String username = req.getParameter("username");
String password = req.getParameter("password");
//创建User对象
User loginUser = new User();
loginUser.setUsername(username);
loginUser.setPassword(password);*/
//获取请求对象数据并封装成map集合
Map<String, String[]> map = req.getParameterMap();
//创建User对象
User loginUser = new User();
try {
//将map封装到loginUser对象中
BeanUtils.populate(loginUser,map);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
//创建UserLoginDao对象
UserLoginDao uld = new UserLoginDao();
//调用UserLoginDao的login方法
User user = uld.login(loginUser);
//判断
if (user ==null){
//跳转到successServlet
req.getRequestDispatcher("/failedServlet").forward(req,resp);
}else {
//设置共享域
req.setAttribute("user",user);
//将user中的用户名存储到Cookie中
Cookie cookie = new Cookie("u", user.getUsername());
//获取记住用户名复选框的值
String remember = req.getParameter("remember");
//判断
if (remember.equals("true")){
//如果登录成功,设置cookie的存活时间
cookie.setMaxAge(7*24*60*60);
//发送cookie到客户端
resp.addCookie(cookie);
}
//跳转到failedServlet
req.getRequestDispatcher("/successServlet").forward(req,resp);
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doGet(req,resp);
}
}
*在判断登陆成功之后,转发之前,将username存储到了cookie中并将cookie发送到客户端
3.其他页面与登录功能实现 一文相同,无需修改
4.效果展示
*这里我依旧输入,账号:zhangsan,密码:123456,并且勾选了记住用户名的复选框
*登陆成功,并显示用户名
再次访问 http://localhost:8080/login.jsp
*发现用户名已经显示在用户名输入框中