一、什么是Cookie

cookie是一种WEB服务器通过浏览器在访问者的硬盘上存储信息的手段。Cookie的目的就是为用户带来方便,为网站带来增值。虽然有着许多误传,事实上Cookie并不会造成严重的安全威胁。Cookie永远不会以任何方式执行,因此也不会带来病毒或攻击你的系统。另外,由于浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制为4KB,因此Cookie不会塞满你的硬盘。

例如,当我们第一次访问网站输入用户名密码时,可以选择让系统记住用户名密码,下次就不用重新输入了,这就是典型的Cookie的应用。

二、Cookie带来的好处:

cookies给网站和用户带来的好处非常多:

  • 1. Cookie能使站点跟踪特定访问者的访问次数、最后访问时间等
  • 2. Cookie能告诉在线广告商广告被点击的次数,从而可以更精确的投放广告
  • 3. Cookie有效期限未到时,Cookie能使用户在不键入密码和用户名的情况下进入曾经浏览过的一些站点
  • 4. Cookie能帮助站点统计用户个人资料以实现各种各样的个性化服务在JSP中,我们也可以使用Cookie,来编写一些功能强大的应用程序。

有些浏览器可以禁用Cookie,所以不能使用Cookie来完成核心的业务。

三、Cookie类的主要方法:

int getMaxAge() 返回Cookie过期之前的最大时间,以秒计算。
int setMaxAge() 设置Cookie过期时间,以秒计算。
String getName() 返回Cookie的名字
String getValue() 返回Cookie的值。
void setValue(String newValue) cookie创建后设置一个新的值。

四、代码实现记住密码登录功能:  

前端页面代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Excel数据上传系统-登录</title>
<link href="${pageContext.request.contextPath}/content/css/page/login.css" rel="stylesheet" type="text/css" />
</head> <body>
<div class="second_body">
<form data-bind="submit:loginClick">
<div class="logo"></div>
<div class="title-zh">Excel数据上传系统</div>
<div class="title-en" style="">Excel Data Upload System</div>
<div class="message" data-bind="html:message"></div>
<table border="0" style="width:300px;">
<tr>
<td style="white-space:nowrap; padding-bottom: 5px;width:55px;">用户名:</td>
<td colspan="2"><input type="text" id="userCode" class="login" data-bind="value:form.userCode" /></td>
</tr>
<tr>
<td class="lable" style="white-space:nowrap; letter-spacing: 0.5em; vertical-align: middle">密码:</td>
<td colspan="2"><input type="password" id="password" class="login" data-bind="value:form.password" /></td>
</tr>
<tr>
<td></td>
<td colspan="2"><input type="checkbox" data-bind="checked:form.remember" /><span>系统记住我</span></td>
</tr>
<tr>
<td colspan="3" style="text-align:center">
<input type="submit" value="登录" class="login_button" />
<input type="button" value="重置" class="reset_botton" data-bind="click:resetClick" />
</td>
</tr>
</table>
</form>
</div> <script type="text/javascript" src="${pageContext.request.contextPath}/content/js/jquery/jquery-1.8.1.min.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/ligerUI/lib/jquery.cookie.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/content/js/core/utils.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/content/js/core/common.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/content/js/core/knockout-3.4.1.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/js/login.js"></script>
<script type="text/javascript">
$(function () {
ko.applyBindings(new viewModel());
});
</script>
</body> </html>

 后台业务处理代码:

 

//登录查询
@RequestMapping(value={"/doLogin"},method ={RequestMethod.GET, RequestMethod.POST})
@ResponseBody
public AjaxJson doLogin(@RequestBody Map<String, String> json,HttpServletRequest request,HttpServletResponse response){
AjaxJson resutl = new AjaxJson();
String loginName = json.get("userCode");
String password = json.get("password");
//用户名密码检查
if ( StringUtils.isBlank(loginName) || StringUtils.isBlank(password)){
resutl.setSuccess(false);
resutl.setMsg("用户名或密码不能为空!");
}else {
String passwordEncode = MD5Util.MD5Encode(password, "utf-8");
ExcelUser user = null;
user = loginService.findUserByLoginName(loginName);
if(user == null) {
resutl.setSuccess(false);
resutl.setMsg("该用户名不存在!");
}else {
user = loginService.findUserByNameAndPwd(loginName, passwordEncode);
if(user == null) {
resutl.setSuccess(false);
resutl.setMsg("密码输入错误,请重新输入");
}else {
if(user.getUser_status()!=null && user.getUser_status().equals("0")) {
resutl.setSuccess(false);
resutl.setMsg("该用户名已被禁用,请联系管理员!");
}else {
resutl.setObj(user);
Map<String, String> map = new HashMap<>();
map.put("userCode", loginName);
map.put("userName", user.getUser_name());
map.put("isOauthUser", "0");
JSONObject jsonObject=JSONObject.fromObject(map);
System.out.println(jsonObject.toString());
request.getSession().setAttribute("LOGIN_USER",jsonObject);
//创建两个Cookie对象
       Cookie nameCookie = new Cookie("userCode", loginName);
       Cookie pwdCookie = new Cookie("password", password);
if("true".equals(String.valueOf(json.get("remember")))){
//设置Cookie的有效期为10天
nameCookie.setMaxAge(60 * 60 * 24 * 10);
pwdCookie.setMaxAge(60 * 60 * 24 * 10);
response.addCookie(nameCookie);
       response.addCookie(pwdCookie);
}else {
//使其cookie失效
nameCookie.setMaxAge(0);
pwdCookie.setMaxAge(0);
response.addCookie(nameCookie);
response.addCookie(pwdCookie);
}
} }
} }
return resutl;
}

 当登录成功之后,再退出的话,就无需要再输入用户名和密码了! 

如果这篇文章对您有所帮助,请随便打赏一下作为鼓励,我会再接再厉的!!!

Cookie实现记住密码的功能的更多相关文章

  1. (四)SpringMVC之使用cookie实现记住密码的功能

    注意:因为实现记住密码的功能需要用到json,所以需要加上这条语句: <script type="text/javascript" src="scripts/jqu ...

  2. JavaWeb学习----Cookie实现记住密码的功能

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  3. jquery.cookie.js 操作cookie实现记住密码功能的实现代码

    jquery.cookie.js操作cookie实现记住密码功能,很简单很强大,喜欢的朋友可以参考下.   复制代码代码如下: //初始化页面时验证是否记住了密码 $(document).ready( ...

  4. 记住密码功能 JS结合JQuery 操作 Cookie 实现记住密码和用户名!

    // 记住密码功能 JS结合JQuery 操作 Cookie 实现记住密码和用户名! var username = document.getElementById("username&quo ...

  5. MiniTwitter记住密码等功能实现

    一.SharedPreferences的用法:(相关实现功能的只是了解) 由于SharedPreferences是一个接口,而且在这个接口里没有提供写入数据和读取数据的能力.但它是通过其Editor接 ...

  6. jsp-4 用cookie实现记住密码

    jsp-4 用cookie实现记住密码 这次就有点简单了 基本是jsp-3的代码但是有些修改 public void login(HttpServletRequest req, HttpServlet ...

  7. 用cookie实现记住密码

    jsp-4 用cookie实现记住密码 这次就有点简单了 基本是jsp-3的代码但是有些修改 public void login(HttpServletRequest req, HttpServlet ...

  8. 【原创】js中利用cookie实现记住密码功能

    在登录界面添加记住密码功能,我首先想到的是在java后台中调用cookie存放账号密码,大致如下: HttpServletRequest request HttpServletResponse res ...

  9. js中利用cookie实现记住密码功能

    在登录界面添加记住密码功能,代码如下: //设置cookie var passKey = '4c05c54d952b11e691d76c0b843ea7f9'; function setCookie( ...

随机推荐

  1. 安卓 android studio 报错 Lint found fatal errors while assembling a release target

    报错截图如下: 解决方法:在app的build.gradle中添加如下代码 android{ lintOptions { checkReleaseBuilds false abortOnError f ...

  2. ORA-02287: sequence number not allowed here问题的解决

    当插入值需要从另外一张表中检索得到的时候,如下语法的sql语句已经不能完成该功能:insert into my_table(id, name) values ((select seq_my_table ...

  3. Python - Django - ORM 常用字段

    AutoField: int 自增列,必须填入参数 primary_key=True 如果没有写 AutoField,则会自动创建一个列名为 id 的列 from django.db import m ...

  4. Linux【Ubuntu】安装docker

    内核要大于3.10才能安装docker 查看内核 uname -r 安装yum命令 sudo apt install yum 由于 apt 源使用 HTTPS 以确保软件下载过程中不被篡改,故添加使用 ...

  5. htm5手机端实现拖动图片

    htm5手机端实现拖动图片 <pre> <!doctype html><html><head> <title>Mobile Cookbook ...

  6. picard报错

    /home/yueyao/bio/anaconda2/bin/java -jar /home/yueyao/bio/anaconda2/share/picard-2.14.1-0/picard.jar ...

  7. RedHat Linux下普通用户无法使用sudo命令的解决方法

    Ref:http://blog.sina.com.cn/s/blog_4aa35ca101012qb6.html 装完linux系统,发现普通用户无法使用sudo 命令, 提示:User1(普通用户) ...

  8. [转帖]亚马逊彻底去掉 Oracle 数据库:迁移完成

    亚马逊彻底去掉 Oracle 数据库:迁移完成 https://mp.weixin.qq.com/s/KFonq8efDZ5K6x4YzIVbbg 云头条的信息挺不错的.. 2019 年 10 月 1 ...

  9. Resin 与 Tomcat 服务器对比

      Resin 与 Tomcat对比(个人总结) 图片来源Tomcat PK Resin 上图对比发现Tomcat对于Resin来说,有诸多优点,但是Resin也有很多优点. 比方说: 速度比较 re ...

  10. 1.http 协议和 https 协议的原理

    首先,我们得知道应用层是 OSI 七层网络模型的第七层,不同类型的网络应用有不同的通信规则,因此应用层协议是多种多样的,比如 DNS.FTP.Telnet.SMTP.HTTP. 等协议都是用于解决其各 ...