Java中session存储Users对象实现记住密码
作者:烤鱼不爱火锅 发布时间:2021-06-27 10:46:59
之前做过cookie实现记住密码,这次换成session记住密码又做了一遍,有很多收获。
本次博客分为两部分。一部分是cookie和session的区别(面试经常被问道);另一部分是sesion实现记住密码,在Jsp页面和Controller页面的代码编写。
一、cookie和session区别
区别:
1.cookie是浏览器端技术;将数据保存到浏览器中,不安全;不可以保存中文保存时编码: URLEncoder.encode();取值时解码:URLDecoder.decode();。
2.session是服务器端技术;将数据保存到服务器中,当访问servlet时,服务器创建session对象同时会向浏览器写入一个sessionId保存到cookie中,当浏览器关闭,session里面的数据没有删除,而是保存sessionId的cookie丢失因此找不到数据,安全。
相同:
两者作用范围都是一次会话(浏览器开启到关闭)有效。
二、session实现记住密码
分为3步。
1.jsp页面布局
默认rem选择框是选中状态
<form name="register" action="login.action" method="post">
<div class="form_row">
<label class="contact"><strong>Phone:</strong></label>
<input type="text" class="contact_input" name="uPhone" id="uPhone" value="${param.uPhone }" onblur="phoneBlur(this.value);"/>
<span id="uPhoneMsg"></span>
</div>
<div class="form_row">
<label class="contact"><strong>Pwd:</strong></label>
<input type="text" class="contact_input" name="uPwd" id="uPwd"/>
<span id="uPwdMsg">${flag }</span>
</div>
<div class="form_row">
<div class="terms">
<input type="checkbox" name="rem" id="rem" checked="checked">记住密码
<!-- <input type="checkbox" name="terms" id="terms"/> Rember me -->
</div>
</div>
<div class="form_row">
<input type="submit" class="register" value="login" />
</div>
</form>
2.controller层逻辑处理
我的代码有两处用到session,这里只看第二处即可。
//2.登录按钮按下后 当rem被选中,且密码正确时,将账号密码这个对象存入session
//5.1登录
@RequestMapping("login")
public String login(String uPhone,String uPwd,String rem,Model model,HttpServletResponse response,HttpServletRequest request){
HttpSession session = request.getSession();
String flag = "1";
String uId = us.selectUsersByPhone_PwdService(uPhone, uPwd);
//判断如果账号密码不存在 返回登录页面;存在,跳转到首页
if(uId==null){
flag="密码错误";
request.setAttribute("flag", flag);
return "register";
}else{
Users u1 = us.selectUsersByIdService(uId);
//1.只要登录成功 就将users对象存入session中,为之后的过滤器使用
session.setAttribute("handlerInterceptorSession", u1);
//2.登录按钮按下后 当rem被选中,且密码正确时,将账号密码存入session
if(rem.equals("on")){
Users u2 = new Users(uPhone,uPwd);
session.setAttribute("remSession", u2);
}
return "index";
}
}
3.jsp页面补充
这里主要看//5.当光标离开后调用记住密码的功能
逻辑是:用户输入账号光标离开后,从session中取值,如果账号在session中存在,则获取账号对应的密码,将密码赋值给输入框。(前提是:rem选择框是选中状态,在1.jsp页面布局里面就设置好了)
<script>
function phoneBlur(uPhone){
var phoneMsg = document.getElementById("uPhoneMsg");
phoneMsg.innerText="";
$.ajax({
type:"post",
url:"phoneExist.action",
data:{"uPhone":uPhone},
dataType:"text",
/* 当flag =0 提示用户不存在
当flag = 1 普通用户
*/
success:function(flag){
if(flag==0){
phoneMsg.innerText = "请先注册";
}
}
})
//5.当光标离开后调用记住密码的功能
remPwd(uPhone);
};
//5记住密码
/*1.当phone光标离开后 当rem被选中 从Remsession里面遍历,获取账号对应的密码。 */
//alert($("#rem").val());
function remPwd(uPhone){
//每次进入 密码先清空
$("#uPwd").val("");
var remVal = $("#rem").val();
if(remVal=="on"){
//第一次登录会报异常,所以加""
var sessionPhone= ${remSession.uPhone}+"";
var sessionPwd= ${remSession.uPwd}+"";
//当账号在session中可以查询到,就将session中的密码赋值给输入框pwd
if(sessionPhone==uPhone){
$("#uPwd").val(sessionPwd);
}
}
}
</script>
至此,session存储Users对象实现记住密码功能完毕,更多相关Java session记住密码内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
来源:https://blog.csdn.net/weixin_46485576/article/details/112545702
猜你喜欢
- 1、mybatis-plus相信大家在日常的开发中用的最多的就是 mybatis-plus了吧,作为一个 MyBatis (opens ne
- 简介:本篇博客主要包括recyclerview添加多种布局以及添加头布局和尾布局,还有item点击事件思路:主要重写Recyclerview
- SpringBoot 配置SwaggerUI 访问404的小坑。在学习SpringBoot构建Restful API的时候遇到了一个小坑,配
- 资源服务器就是业务服务 如用户服务,订单服务等 第三方需要到资源服务器调用接口获取资源ResourceServerConfigResourc
- Android自定义SwipeLayout仿QQ侧滑条目,供大家参考,具体内容如下先看动图 看布局文件activity_main.xml&l
- 本文实例讲述了Android编程解析XML方法。分享给大家供大家参考,具体如下:XML在各种开发中都广泛应用,Android也不例外。作为承
- EntityWrapper使用解析1、项目中引入jar包,我这里使用Maven构建<dependency> &nbs
- 目录实现效果实现方式实现步骤Blend绘制Path绘制Path绘制直线绘制曲线改变曲线形状移除Path上的线段移除Path上的点Path添加
- 本文实例讲述了C#中TreeView节点的自定义绘制方法。分享给大家供大家参考。具体如下:if ((e.State & TreeNo
- 前言植物大战僵尸的数据文件是存储在本地的dat文件当中,修改在本地的dat文件就可以修改到游戏中的数据。之前使用二进制编码工具Hex Edi
- 首先是main.xml文件代码如下:<LinearLayout xmlns:android="http://schemas.
- AtomicInteger 类底层存储一个int值,并提供方法对该int值进行原子操作。AtomicInteger 作为java.util.
- 一、DurationDuration主要用来衡量秒级和纳秒级的时间,使用于时间精度要求比较高的情况。先来看看Duration的定义:publ
- 最近做了一个项目中,其中遇到这样的需求要求图片移动到手指触碰的地方。具体实现代码如下所示:package com.example.plane
- 本文实例为大家分享了WPF ProgressBar实现实时进度的具体代码,供大家参考,具体内容如下简单测试,页面如图:利用上班的一点点空闲时
- 案例需求:访问带有验证码的登录页面login.jsp用户输入用户名,密码以及验证码。如果用户名和密码输入有误,跳转登录页面,提示:用户名或密
- 该功能本来可以通过拉动水平和垂直滚动条来实现,但实际使用中,用户更趋向于直接用鼠标拖动页面来实现,很多看图类软件都有这种类似的功能。而.ne
- 本节了解一下 SpringBoot 中 Web 开发的静态资源导入和首页设置,对应 SpringBoot-03-Web 项目。1. 静态资源
- 本文实例讲述了Android编程简易实现XML解析的方法。分享给大家供大家参考,具体如下:首先创建在Android工程中创建一个Assets
- 一、题目描述题目实现:获取远程服务器和客户机的IP地址和端口号。二、解题思路创建一个服务器类:ServerSocketFrame,继承JFr