java cookie实现记住密码_JavaWeb 中Cookie实现记住密码的功能示例

本文主要内容:

•1、什么是Cookie

•2、Cookie带来的好处

•3、Cookie的主要方法

一、什么是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创建后设置一个新的值。

注:名字和值是我们始终关心的两个部分。稍后会详细介绍getName/setName、getValue/setValue。

四、代码举例:

【实例】实现记住密码、自动登录的功能

新建JavaWeb工程Test06.

login.jsp:

pageEncoding="UTF-8"%>

Insert title here

String username = "";

String password = "";

//获取当前站点的所有Cookie

Cookie[] cookies = request.getCookies();

for (int i = 0; i < cookies.length; i++) {//对cookies中的数据进行遍历,找到用户名、密码的数据

if ("username".equals(cookies[i].getName())) {

username = cookies[i].getValue();

} else if ("password".equals(cookies[i].getName())) {

password = cookies[i].getValue();

}

}

%>

username:

password:

自动登录

13行代码:获取当前站点所有的Cookie。注:这个Cookie类是在接下来的login_handler.jsp文件中定义的。

26行的value="",以及27行的value="",是在16行、18行获取到的值。

login_handler.jsp:

pageEncoding="UTF-8"%>

String name = request.getParameter("name");

String pwd = request.getParameter("pwd");

String flag = request.getParameter("isLogin");

if (!"admin".equals(name) && !"123".equals(pwd)) {

response.sendRedirect("error.jsp");

} else {

if ("y".equals(flag)) {

//创建两个Cookie对象

Cookie nameCookie = new Cookie("username", name);

//设置Cookie的有效期为3天

nameCookie.setMaxAge(60 * 60 * 24 * 3);

Cookie pwdCookie = new Cookie("password", pwd);

pwdCookie.setMaxAge(60 * 60 * 24 * 3);

response.addCookie(nameCookie);

response.addCookie(pwdCookie);

}

response.sendRedirect("success.jsp");

}

%>

核心代码是11行至20行。

11行:如果用户勾选了“自动登录”,就把用户名和密码的信息放到Cookie中。

第15、17行代码是设置Cookie的存储时间。如果不设置Cookie的存储时间,则默认的存储时间为0,此时Cookie保存的数据是存放在内存中的,当浏览器关闭,则Cookie消失失效。

设置了存储时间后,此时设置Cookie的数据将保存在硬盘中,不同的浏览器存放的具体位置是不一样的。

谷歌浏览器查看cookie的位置:

“菜单-设置-显示高级设置-内容设置”:

aa8f2d17950ef5e1ff6f93aaba67c18b.png

单击上图中的“内容设置”,弹出如下界面:

15865eb81c236a8199f8ca2b3ed99f56.png

单击上图的红框部分,弹出如下界面:

f2c5e0a7ebfa58bcde1364eceb882a69.png

success.jsp:

pageEncoding="UTF-8"%>

Insert title here

如果登陆成功,就调到这个页面。

error.jsp:

pageEncoding="UTF-8"%>

Insert title here

运行程序,当输入正确的用户名密码进行登录,并勾选“记住密码”后,下次再回到登录界面,就是下面的这个样子:

4bf2da8e4f2df030f76f5976057011cb.png

以上所述是小编给大家介绍的JavaWeb 中Cookie实现记住密码的功能示例,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaWeb应用,为了实现用户登录认证,通常会使用Session和Cookie。 Session是在服务端保存用户状态的一种机制,每个用户在访问服务器时都会被分配一个唯一的Session ID,通过该ID可以在服务端存储和获取与该用户相关的信息。在用户登录后,可以将用户信息存储到Session,供之后的页面访问和使用。 Cookie是在客户端保存用户状态的一种机制,通过在服务端设置Cookie,在客户端保存一个唯一的标识符,带着该标识符可以在客户端和服务端之间传递数据。在用户登录后,可以将用户信息存储到Cookie,供之后的页面访问和使用。 使用Session和Cookie实现登录认证的基本流程如下: 1. 用户在登录页面输入用户名和密码。 2. 服务器接收到请求后,验证用户名和密码是否正确。 3. 如果验证通过,生成一个唯一的Session ID,并将用户信息存储到Session。 4. 将Session ID 存储到Cookie,并设置Cookie的有效期。 5. 用户访问其他页面时,将Cookie的Session ID 发送到服务器,服务器根据Session ID 获取用户信息,判断用户是否登录。 6. 如果用户已经登录,返回需要访问的页面内容;如果用户未登录,跳转到登录页面。 示例代码如下: ```java // 生成Session ID String sessionId = UUID.randomUUID().toString(); // 将用户信息存储到Session HttpSession session = request.getSession(); session.setAttribute("username", username); // 将Session ID 存储到Cookie,并设置有效期为1天 Cookie cookie = new Cookie("sessionId", sessionId); cookie.setMaxAge(24 * 60 * 60); response.addCookie(cookie); // 获取Cookie的Session ID,并根据Session ID 获取用户信息 Cookie[] cookies = request.getCookies(); String sessionId = null; if (cookies != null) { for (Cookie c : cookies) { if ("sessionId".equals(c.getName())) { sessionId = c.getValue(); break; } } } if (sessionId != null) { HttpSession session = request.getSession(false); if (session != null) { String username = (String) session.getAttribute("username"); if (username != null) { // 用户已经登录,返回需要访问的页面内容 } } } // 用户未登录,跳转到登录页面 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值