一、什么是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. QQ第三方登录回调地址的问题

    如题,维护以前的项目,发现原来QQ的第三方登录竟然失败了.回调地址的问题 原来是以前的规则变了.好吧,那就改,谁叫我不是改变规则的人. 中途浪费了点时间,项目很大,我一下也找不到项目里那个接口调用的, ...

  2. LeetCode_292. Nim Game

    292. Nim Game Easy You are playing the following Nim Game with your friend: There is a heap of stone ...

  3. (NSNumber **)value和(NSNumber * __autoreleasing *)value

    今天在看别人开源项目的时候看到这样的代码: 正文从这里开始~~~ 定义如下: /** 评论详情页基础设置 @param BaseSettingBlock 基础设置 */ - (void)setUpCo ...

  4. 正确删除k8s版本jenkins的pod

    1.kubectl delete -f jenkins-deployment.yaml 或者先删除pod,再删除对应的depllyment 这两步都要执行否则删除pod不管用 2.删除数据目录下的数据 ...

  5. POJ 3903 Stock Exchange 最长上升子序列入门题

    题目链接:http://poj.org/problem?id=3903 最长上升子序列入门题. 算法时间复杂度 O(n*logn) . 代码: #include <iostream> #i ...

  6. HTML布局水平导航条1制作

    该文是用css制作个导航条,用竖线分隔,导航条是点击的多个区块.步骤:ul里设置需要数量的li,li中加上a链接给ul加样式,去掉默认的前面的点给li设置左浮动,让ul里的li横向排列a链接设置成块状 ...

  7. 【转】do...while(0)的妙用

    前言 今天无意中看到这个标题,因为好奇就点进去了,不错,又学习啦... 具体内容: 1. do...while(0)消除goto语句: 2 宏定义中的do...while(0): 参考 1. 原链接_ ...

  8. gcr 镜像无法下载问题

    GCR Proxy Cache 帮助 GCR Proxy Cache服务器相当于一台GCR镜像服务器,国内用户可以经由该服务器从gcr.io下载镜像. 使用GCR Proxy Cache从gcr.io ...

  9. 【VS开发】MFC修改Opencv namedWindow的风格

    当在MFC中应用opencv的窗口来显示图片.希望namedWindow创建的窗口能根据需要改变风格: //by dongchunxiao cv::namedWindow("windows1 ...

  10. {"aa":null} 如何能转化为 {"aa":{}}

    一个同事问的一个功能需求:{"aa":null} 如何能转化为 {"aa":{}}因为需求暂时不明确,暂时先完成这样的转换.使用的是FastJson1.2.7 ...