了解Cookie机制,掌握使用Cookie向客户端写入数据的方法,了解Cookie存活时间的设置方式和不同参数值(正整数/负数/0)的意义,使用Cookie实现登录保持

题目:

在用户登录界面中输入账号和密码,如果账号和密码相等,则登录成功,进入欢迎界面; 在登录时,如果选择了“保持登录状态”,下次访问登录页面时,则直接进入欢迎页面,无需重新登录(重开页签/重启浏览器/重启Tomcat/重启客户端电脑情况下访问登录页面均能直接进入欢迎页面,可逐项测试,分析原因);

在登录时,如果没有选择“保持登录状态”,下次访问登录页面,则不会跳转欢迎页面,需要重新输入用户名密码登录。

三个页面

login.jsp页面

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<body>
	<!-- Cookie的作用:当你访问注册页面,
		首先检查是否之前有把数据保存到Cookie中,如果是,遍历Cookie找到数据并赋值给变量
	 -->
	<%
		Cookie[] cookies = request.getCookies();
		String account = "";
		String psd = "";
		if(cookies!=null && cookies.length!=0){
			for(int i=0;i<cookies.length;i++){
				if(cookies[i]!=null){
<!--为什么需要equals函数?Cookie可以看做是一个乱序的键值对的数组,所以当对其遍历时,需要进行比对-->
					if("account".equals(cookies[i].getName())){
						account = cookies[i].getValue();
					}
					else if("psd".equals("psd")){
						psd = cookies[i].getValue();
					}
				}
			}
		}
		if(!account.equals("")&&!psd.equals("")&&account.equals(psd)){
			response.sendRedirect("welcome.jsp");
		}
	%>
	<form action="login1.jsp" method="post">
		请输入账号:<input type="text" name="account" ><br>
		请输入密码:<input type="password" name="psd" ><br>
		是否保存登录状态:
		<input type="radio" name="state" value="yes" >是
		<input type="radio" name="state" value="no" >否<br>
		<input type="submit" value="登录" >
	</form>
</body>
</html>

 login1.jsp页面

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<body>
	<%
		request.setCharacterEncoding("utf-8");
		String account = request.getParameter("account");
		String psd = request.getParameter("psd");
		String state = request.getParameter("state");
		
		//确定用户是否可登录,即account、psd是否存在且两者相等
		if(!account.equals("")&&account!=null 
			&& !psd.equals("")&&psd!=null&&account.equals(psd)){
			//通过state判断是否存在且是否需要保存
			//如果state=yes,则把数据保存到Cookie中,并跳转到welcome页面
			if(state!=null&&state.equals("yes")){
				Cookie c1 = new Cookie("account",account);
				c1.setMaxAge(60*60*24);
				response.addCookie(c1);
				
				Cookie c2 = new Cookie("psd",psd);
				c2.setMaxAge(60*60*24);
				response.addCookie(c2);
			}
			response.sendRedirect("welcome.jsp");
		}
		//条件不符合,则登录失败,返回到注册页面
		else{
			response.sendRedirect("login.jsp");
		}
	%>
</body>
</html>

welcome页面:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<body>
	欢迎登录!
</body>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值