web功能实现-记住用户名

一、环境

登录功能实现 一文

二、工程目录

登录功能实现 一文。

三、代码编写
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

在这里插入图片描述
*发现用户名已经显示在用户名输入框中

猜你喜欢

转载自blog.csdn.net/csdnDDdxm/article/details/83000445