登陆页面示例2(Cookie、Session的使用)

案例需求描述

在这里插入图片描述

案例准备

《登陆页面示例(包含请求转发、重定向解析及MVC应用)》文章中相关资源引入,并修改相应配置,微调。

代码实现——登陆页面完善

  • 登录页,登陆成功后添加保存用户信息步骤
//4.页面展示
if(existUser == null) {
	//登录失败
	//向request域中保存一个错误信息
	request.setAttribute("msg", "用户名或密码错误!");
	//使用请求转发进行页面跳转
	request.getRequestDispatcher("/login.jsp").forward(request, response);
}else {
	//登陆成功  重定向
	//保存用户登陆数据:保存到会话当中。
	HttpSession session = request.getSession();
	session.setAttribute("existUser", existUser);
	
	response.sendRedirect("/web_cookie/success.jsp");
}
  • 登陆成功页面,登陆判断
<% 
	if(request.getSession().getAttribute("existUser") == null){
%>
	<h1>您还未登录,请先<a href = "/web_cookie/login.jsp">点击登录</a></h1>
<%
	}else{
	User existUser = (User)request.getSession().getAttribute("existUser");
%>	
	<h1>用户登录成功页面</h1>
	<h3>欢迎您,<%= existUser.getNickname() %></h3>
<%	
	}
%>

代码实现——一次性验证码

在这里插入图片描述

  • 百度一个生成一次性验证码图片的servlet文件,做微调,目的是取得生成验证码的字符串,用来校验登录。

在这里插入图片描述

  • 校验一次性验证码(在loginServlet中)
//一次性验证码的校验
//接收验证码
String checkcode1 = request.getParameter("checkcode");
//从Session中获取一次性验证码的值
String checkcode2 = (String) request.getSession().getAttribute("checkCode");
//为了保证验证码只使用一次,应该将session中的验证码值清空
request.getSession().removeAttribute("checkCode");
//校验一次性验证码
if(!checkcode1.equalsIgnoreCase(checkcode2)) {
	request.setAttribute("msg", "验证码输入错误");
	request.getRequestDispatcher("/login.jsp").forward(request, response);
	return;
}
  • 一次性验证码的点击切换

首先在登录页面添加点击事件
在这里插入图片描述

其次,利用js函数修改生成图片的src即可,time为了改变提交的参数,防止浏览器读取相同路径的缓存,这样验证码就不会改变了。
在这里插入图片描述

代码实现——记住用户名

如果在登陆的过程中,将记住登录名的复选框勾选了,并且在登陆成功的情况下,需要记住用户名,在关闭浏览器下次访问的时候,会在用户名文本框中自动呈现出用户名。

  • 后台代码(LoginServlet文件)
//记住用户名的后台代码:
//判断复选框是否已经勾选
String remember = request.getParameter("remember");
if("true".equals(remember)) {  
	//说明勾选了
	Cookie cookie = new Cookie("username", existUser.getUsername());
	//设置有效路径:
	cookie.setPath("/web_cookie");
	//设置有效时长:
	cookie.setMaxAge(60*60*24*7); //7天
	//cookie回写到浏览器
	response.addCookie(cookie); 
}
  • 在页面的文本框中回显用户名(login.jsp文件,使用EL表达式,添加了value属性)
<tr>
	<td>用户名</td>
	<td><input type="text" name="username" value="${cookie.username.value}"></td>
</tr>

代码实现——系统退出

  • 提供一个退出的链接(success.jsp文件下)
<h1>用户登录成功页面</h1>
<h3>欢迎您,<%= existUser.getNickname() %><a href="/web_cookie/logoutServlet">退出</a></h3>
  • 新建logoutServlet文件
//销毁session
request.getSession().invalidate();
//页面跳转
response.sendRedirect("/web_cookie/success.jsp");
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值