Javaweb | cookie实现两周内免登录
目录
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实现两周内免登录相关推荐
- 表单提交-两周内免登录javaweb cookie实现
目录 一.运行结果 二.原理 login.jsp LoginServlet.java hello.jsp 三.代码分享 login.jsp LoginServlet.java hello.jsp 一. ...
- php怎么做免登录,php---一周内免登录
在很多登陆界面 会有 一周内免登录的功能,实现的原理是,免登录的选项 在网页前端作为一个 checkbox ,用户选择之后一起post 发送到服务端,服务端通过 setcookie 这个函数,设置客户 ...
- php---一周内免登录
在很多登陆界面 会有 一周内免登录的功能,实现的原理是,免登录的选项 在网页前端作为一个 checkbox ,用户选择之后一起post 发送到服务端,服务端通过 setcookie 这个函数,设置客户 ...
- html如何实现自动登录,JS实现两周内自动登录功能
本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下 两周内自动登录 两周内自动登录 var oTxt1 = document.getElementsByName('u ...
- 使用cookie实现一周内自动登录
一般网站的登录界面都会有自动登录的一个选项.现在就来实现一个一周内自动登录的功能. 1.如果当用户登录的时候,在处理页,要判断是否选择了自动登录,然后实现将id和name存进cookie: if($a ...
- JS-两周内自动登录功能
1 <!DOCTYPE html>2 <html>3 <head>4 <meta charset="UTF-8">5 <tit ...
- Cookie 学习案例之三天免登录
Cookie 问题:HTTP 协议是没有记忆功能的,一次请求结束后,相关数据会被销毁.如果第二次的请求需要使用相同的请求数据怎么办呢?难道是让用户再次请求书写吗? 解决:使用 Cookie 技术 解释 ...
- jsp实现简单用户登录(用户7天内免登录)
(1)登陆页面:login.jsp <%@ page language="java" contentType="text/html; charset=utf-8&q ...
- 网站1周内自动登录功能实现
在很多比较大型的网址例如:CSDN,大家在登录时候会有一个[下次自动登录]的功能,该功能与我们的1周内自动登录功能基本类似.所谓的自动登录无非就是,绕过登录界 面,自动登录到系统主页. 自动登录的原理 ...
最新文章
- uchome 模板引擎
- Java Ajax: DWR
- OpenGL 基础图形绘制与投影变换
- 【Linux系统编程】Linux线程浅析
- 排序代码(python,c++) 及 基本算法复杂度
- 奇葩面试官让我回去等通知!看我怎么虐他!
- LeetCode算法入门- Multiply Strings -day18
- 7.1 SAP MASS批量修改操作手册
- iptables 小提升
- 转《针对不同版本的ie调用不同css样式》
- Java中Xml文件的解析
- sql统计各科成绩大于平均分的人_SQL第三关:汇总分析
- 电力电气自动计算excel表格大全【共46份】
- rar x64 5.50 linux,WinRAR 5.50简体中文注册版(已含Key文件和32位、64位)
- python之Django框架将sqliteman数据库数据显示在页面上
- 计算机组装有哪些,详解电脑组装配置有哪些
- 面试常见的 10 大问题
- 多重积分积分区域奇偶对称性化简积分
- 字符串右移n位,例如 “hello world“ 右移两位 后ldhello wor 要求写一个方法实现此功能,方法的格式是 String moveToRight(String str,int po
- Pytest如何重复执行N次脚本
热门文章
- 编译32/64位OpenCASCADE的详细步骤
- 第四章:进击,拿到Web最高权限
- Android网络编程面试题集
- matlab如何化简表达式/多项式?
- 理论力学专题:理论力学(物理类)框架
- Minecraft 1.16.5模组开发(五十三) 多种生物类型(Variant)
- 对傅里叶变换公式讨论 很经典
- 游戏显示计算机丢失文件怎么办,安全系统检测到游戏文件缺失或损坏,请获取正确文件进行替换。怎么办?...
- 老网站 轮播图重构 ——HTML+JavaScript简单地实现图片轮播
- 有些句子,比人还美!真的