目录

1. 问题

2.解决思路

3. 解决步骤

3.1 编写登录页面(lg.jsp)

3.2 编写一个登录成功页面(success.jsp)

3.3 编写登录失败页面(fail.html)

3.4 写一个cookie的类用来存储从页面获取的用户信息(Login.java)

3.5 在登录页面(lg.jsp)添加检索Cookie是否存在

4. 运行结果


1. 问题

在用户登陆界面中,输入账号和密码,登陆成功时,进入欢迎页面。在登录时,如果勾选了两周内免登录,则在下次登录时,可以不用输入密码,直接跳转到成功页面,从而实现免登录功能。

2.解决思路

当用户登陆时勾选了免登录按钮,在cookie的处理逻辑中就会将从登录页面中获取到的用户信息存储在cookie中,同时可以设置cookie的有效时间等。当用户在cookie有效时间内再次登录,在登陆页面就会获取cookie,查看其中是否有之前储存的数据,如果有就会直接跳转到成功页面。

3. 解决步骤

3.1 编写登录页面(lg.jsp)

这里的两个文本框中的<%=username%>和<%=password%>后面会提到,是在再次登录时,从cookie中获取信息自动填充的。

<%@ page import="java.io.PrintWriter" %>
<%@ page import="java.util.Date" %>
<%@ page import="java.text.SimpleDateFormat" %><%--Created by IntelliJ IDEA.User: dellDate: 2021/11/4Time: 21:05To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><meta charset="UTF-8"><title>登陆页面</title><style>.lg {margin-top: 100px;}body {background: aliceblue;}</style>
</head>
<body>
<div class="lg"><form action="lg" method="post"><table border="1" width="30%" align="center"><caption>用户登录</caption><tr><td><label for="username">用户名:</label></td><td><input type="text" name="username" placeholder="请输入用户名" id="username" value="<%=username%>"></td></tr><tr><td><label for="password">密码:</label></td><td><input type="password" name="password" placeholder="请输入密码" id="password" value="<%=password%>"></td></tr><tr><td colspan="2" align="center"><input name="twoDays" type="checkbox" value="ok">两天内免登陆</td></tr><tr><td colspan="2" align="center"><input type="submit" value="登陆"></td></tr></table></form>
</div>
</body>
</html>

3.2 编写一个登录成功页面(success.jsp)

<%@ page import="java.io.PrintWriter" %>
<%@ page import="java.util.Date" %>
<%@ page import="java.text.SimpleDateFormat" %><%--Created by IntelliJ IDEA.User: dellDate: 2021/11/4Time: 21:05To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><meta charset="UTF-8"><title>登陆页面</title><style>body {background: aliceblue;}</style>
</head>
<body>
登陆成功!!
</body>
</html>

3.3 编写登录失败页面(fail.html)

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>fail</title>
</head>
<body>
用户名或密码错误,请
<a href="lg.jsp">重新登陆</a>
</body>
</html>

3.4 写一个cookie的类用来存储从页面获取的用户信息(Login.java)

当我们选择“免登录”在按下登录按钮后,在cookie处理这块就会判断从登录页面获取的twodays的参数值是不是"ok",如若是,被获取的用户信息表单就利用cookie将保存起来了。

这里可以设置cookie的有效时间,便于检查这里设置的是10秒。

@WebServlet("/lg")
public class Login extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String username = request.getParameter("username");String password = request.getParameter("password");String twoDays = request.getParameter("twoDays");PrintWriter out = response.getWriter();//查看用户名和密码是否正确,我这里对用户名和密码没有强用要求,只要输入了就行,可以自己改if (username != null && password != null) {if ("ok".equals(twoDays)) {//将用户信息存储到cookie中,并且关联路径和设置有效时间Cookie cookie1 = new Cookie("username", username);Cookie cookie2 = new Cookie("password", password);cookie1.setPath("/");cookie2.setPath("/");cookie1.setMaxAge(10);//10秒cookie2.setMaxAge(10);//服务器发送cookie给客户端浏览器response.addCookie(cookie1);response.addCookie(cookie2);}//跳转到主页response.sendRedirect("success.jsp");} else {//跳转到登陆失败页面response.sendRedirect("fail.html");}}
}

3.5 在登录页面(lg.jsp)添加检索Cookie是否存在

如果cookie已经保存过了,那么当用户在cookie的有限时间内在登陆时,应该自动填充账号密码,并且跳转到成功页面。

上面提到的<%=username%>和<%=password%>是在这里得到的,获取一个Cookie数组,检索一下当前账号是否已经有保存了,如果有的话,那if(cookies!=null&&cookies.length>0)就会成立,在数组中找到我们需要的账号和密码,自动填充到两个文本框中,接下来就会利用request.getRequestDispatcher("success.jsp").forward(request, response)跳转到成功页面。

<%//获取cookieCookie[] cookies = request.getCookies();//取出cookie中的值String username = "";String password = "";if (cookies != null && cookies.length > 0) {for (Cookie cookie : cookies) {String cookieName = cookie.getName();if ("username".equalsIgnoreCase(cookieName)) {username = cookie.getValue();}if ("password".equalsIgnoreCase(cookieName)) {password = cookie.getValue();}if ("username".equalsIgnoreCase(cookieName)){request.getRequestDispatcher("success.jsp").forward(request, response);}}}
%>

4. 运行结果

跳转到成功页面

 再次访问登陆界面时,就会跳转到成功页面。


如果有错误或者有疑问,欢迎一起交流~~

Javaweb | cookie实现两周内免登录相关推荐

  1. 表单提交-两周内免登录javaweb cookie实现

    目录 一.运行结果 二.原理 login.jsp LoginServlet.java hello.jsp 三.代码分享 login.jsp LoginServlet.java hello.jsp 一. ...

  2. php怎么做免登录,php---一周内免登录

    在很多登陆界面 会有 一周内免登录的功能,实现的原理是,免登录的选项 在网页前端作为一个 checkbox ,用户选择之后一起post 发送到服务端,服务端通过 setcookie 这个函数,设置客户 ...

  3. php---一周内免登录

    在很多登陆界面 会有 一周内免登录的功能,实现的原理是,免登录的选项 在网页前端作为一个 checkbox ,用户选择之后一起post 发送到服务端,服务端通过 setcookie 这个函数,设置客户 ...

  4. html如何实现自动登录,JS实现两周内自动登录功能

    本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下 两周内自动登录 两周内自动登录 var oTxt1 = document.getElementsByName('u ...

  5. 使用cookie实现一周内自动登录

    一般网站的登录界面都会有自动登录的一个选项.现在就来实现一个一周内自动登录的功能. 1.如果当用户登录的时候,在处理页,要判断是否选择了自动登录,然后实现将id和name存进cookie: if($a ...

  6. JS-两周内自动登录功能

    1 <!DOCTYPE html>2 <html>3 <head>4 <meta charset="UTF-8">5 <tit ...

  7. Cookie 学习案例之三天免登录

    Cookie 问题:HTTP 协议是没有记忆功能的,一次请求结束后,相关数据会被销毁.如果第二次的请求需要使用相同的请求数据怎么办呢?难道是让用户再次请求书写吗? 解决:使用 Cookie 技术 解释 ...

  8. jsp实现简单用户登录(用户7天内免登录)

    (1)登陆页面:login.jsp <%@ page language="java" contentType="text/html; charset=utf-8&q ...

  9. 网站1周内自动登录功能实现

    在很多比较大型的网址例如:CSDN,大家在登录时候会有一个[下次自动登录]的功能,该功能与我们的1周内自动登录功能基本类似.所谓的自动登录无非就是,绕过登录界 面,自动登录到系统主页. 自动登录的原理 ...

最新文章

  1. uchome 模板引擎
  2. Java Ajax: DWR
  3. OpenGL 基础图形绘制与投影变换
  4. 【Linux系统编程】Linux线程浅析
  5. 排序代码(python,c++) 及 基本算法复杂度
  6. 奇葩面试官让我回去等通知!看我怎么虐他!
  7. LeetCode算法入门- Multiply Strings -day18
  8. 7.1 SAP MASS批量修改操作手册
  9. iptables 小提升
  10. 转《针对不同版本的ie调用不同css样式》
  11. Java中Xml文件的解析
  12. sql统计各科成绩大于平均分的人_SQL第三关:汇总分析
  13. 电力电气自动计算excel表格大全【共46份】
  14. rar x64 5.50 linux,WinRAR 5.50简体中文注册版(已含Key文件和32位、64位)
  15. python之Django框架将sqliteman数据库数据显示在页面上
  16. 计算机组装有哪些,详解电脑组装配置有哪些
  17. 面试常见的 10 大问题
  18. 多重积分积分区域奇偶对称性化简积分
  19. 字符串右移n位,例如 “hello world“ 右移两位 后ldhello wor 要求写一个方法实现此功能,方法的格式是 String moveToRight(String str,int po
  20. Pytest如何重复执行N次脚本

热门文章

  1. 编译32/64位OpenCASCADE的详细步骤
  2. 第四章:进击,拿到Web最高权限
  3. Android网络编程面试题集
  4. matlab如何化简表达式/多项式?
  5. 理论力学专题:理论力学(物理类)框架
  6. Minecraft 1.16.5模组开发(五十三) 多种生物类型(Variant)
  7. 对傅里叶变换公式讨论 很经典
  8. 游戏显示计算机丢失文件怎么办,安全系统检测到游戏文件缺失或损坏,请获取正确文件进行替换。怎么办?...
  9. 老网站 轮播图重构 ——HTML+JavaScript简单地实现图片轮播
  10. 有些句子,比人还美!真的