Cookie实现免用户名和密码自动登录

Posted 花伤情犹在

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cookie实现免用户名和密码自动登录相关的知识,希望对你有一定的参考价值。

前言

我们在访问网站的时候,有的网站一天之内访问好几次,如果用户每次访问都需要这些登录操作就会感到相当厌烦。所以通过Cookie的技术手段让网站“记住”那些在曾经登录过的用户。当该用户下次再来访问的时候,网站可以识别该用户,并为其自动完成登录过程。


实现免用户名和密码自动登录效果:

在这里插入图片描述


登录界面

效果图
在这里插入图片描述
代码:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
    String username = null;
    String password = null;
    Cookie[] cookies = request.getCookies();
    if (cookies!=null){
    	//遍历Cookie
        for (Cookie cookie : cookies) {
            if ("username".equals(cookie.getName())){
                username = cookie.getValue();
                out.print("用户名:"+username+"</br>");
            }
            if ("password".equals(cookie.getName())){
                password = cookie.getValue();
                out.print("密码:"+password+"</br>");
            }
        }
        //将用户名添加到session域中
        request.getSession().setAttribute("username",username);
        if ("root".equals(username) && "root".equals(password)){
            response.sendRedirect("welcome.jsp");
        }
    }
%>
<html>
<head>
    <title>Cookie免密登录</title>
</head>
<style>
    div{
        margin: auto;
        text-align: center;
    }
</style>
<body>
    <div>
        <form action="login" method="post">
            账号:<input type="text" name="username"><br>
            密码:<input type="password" name="password"><br>
            <input type="submit" value="登录">
        </form>
    </div>
</body>
</html>

Servlet代码:

package servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet("/login")
public class login extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取用户名
        String username = request.getParameter("username");
        //获取密码
        String password = request.getParameter("password");
        //设置响应内容类型和编码方式
        response.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        //获取输出流
        PrintWriter out = response.getWriter();
        if ("root".equals(username) && "root".equals(password)){
            //将用户名和密码添加到Cookie中
            Cookie cookiename = new Cookie("username","root");
            Cookie cookiepwd = new Cookie("password","root");
            //设置Cookie的过期时间-1小时-(单位/秒)
            cookiename.setMaxAge(60*60);
            cookiepwd.setMaxAge(60*60);
            //发送Cookie给客户端
            response.addCookie(cookiename);
            response.addCookie(cookiepwd);
            //转发到welcome页面
            request.getRequestDispatcher("welcome.jsp").forward(request,response);
        }else {
            out.print("<script>alert('账号或密码错误!')</script>");
            out.print("<script>location.href='login.jsp'</script>");
        }
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request,response);
    }
}

登录成功页面

效果图
在这里插入图片描述
代码:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
    //判断浏览器缓存有没有用户名的Cookie信息
    if (session.getAttribute("username")==null){
        response.sendRedirect("login.jsp");
    }
%>
<html>
<head>
    <title>登录成功,欢迎您<%=session.getAttribute("username")%></title>
</head>
<body>
    欢迎您:<%=session.getAttribute("username")%>
</body>
</html>

以上是关于Cookie实现免用户名和密码自动登录的主要内容,如果未能解决你的问题,请参考以下文章

ServletContext对象应用——三天免登录

ssh登录自动输入密码

利用cookie 账号密码 如何实现网站自动登录

Cookie实现记住密码自动登录功能

C# winform 如何取得网站cookie,从而实现自动登录。

wkwebview免登录,配置cookie,免登陆