利用cookie实现自动登录

 

先来说说思路

我们在登录页面需要知道,是否为为第一次登录,

判断这个的方法就是获取本地cookie,

如果得到的cookie为空(即第一次登录),那么就需要用户手动登录,

如果存在,就直接跳转登陆成功的页面。

下面送上代码

login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%
		String username = "";
		String password = "";
		// 获取cookie
		Cookie[] cookies = request.getCookies();
		// 如果为空,则停留在该页面
		if(cookies == null){
			return ;
			// 不为空则获取用户名和密码
		}else{
			for(int i = 0; i < cookies.length; i++){
				if("username".equals(cookies[i].getName())){
					username = cookies[i].getValue();
				}
				if("password".equals(cookies[i].getName())){
					password = cookies[i].getValue();
				}
			}
			// 验证用户名和密码
			if("admin".equals(username) && "123".equals(password)){
				session.setAttribute("username", username);
				session.setAttribute("password", password);
				response.sendRedirect("welcome.jsp");
			}
		}
		
	%>

	<form action="test" method="post">
		用户名:<input type="text" name="username" /><br /> 
		密&nbsp;&nbsp;&nbsp;码:<input type="password" name="password" /><br /> 
		<input type="radio"	name="validTime" value="week" />一周 
		<input type="radio" name="validTime" value="month" />一月 
		<input type="radio" name="validTime" value="default" checked="checked" />默认<br /> 
		<input type="submit" value="登陆" />
	</form>
</body>
</html>

 CookieServlet.java

@WebServlet("/test")
public class CookieServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		resp.setContentType("text/html;charset=utf-8");
		String username = req.getParameter("username");
		String password = req.getParameter("password");
		// 获取有效时长
		String validTime = req.getParameter("validTime");
		// 验证成功跳转welcome.jsp,否则跳转login.jsp
		if ("admin".equals(username) && "123".equals(password)) {
			Cookie userCookie = new Cookie("username", username);
			Cookie pwdCookie = new Cookie("password", password);
			if ("week".equals(validTime)) {
				userCookie.setMaxAge(7 * 24 * 60 * 60);
				pwdCookie.setMaxAge(7 * 24 * 60 * 60);
			}
			if ("month".equals(validTime)) {
				userCookie.setMaxAge(30 * 24 * 60 * 60);
				pwdCookie.setMaxAge(30 * 24 * 60 * 60);
			}
			HttpSession session = req.getSession();
			session.setAttribute("username", username);
			session.setAttribute("password", password);
			resp.addCookie(userCookie);
			resp.addCookie(pwdCookie);
			resp.sendRedirect("welcome.jsp");
		} else {
			resp.sendRedirect("login.jsp");
		}
	}

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		this.doPost(req, resp);
	}

welcome.jsp

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	欢迎回来${username}
</body>
</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值