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实现免用户名和密码自动登录的主要内容,如果未能解决你的问题,请参考以下文章