作者:changless | 来源:互联网 | 2023-08-27 16:10
前言本文提供使用cookie实现记住用户名、密码的代码实例、难点注释。文末有完整项目代码下载地址。实现界面初始登录界面输入:张三123456点击登录之后跳转界面
前言
本文提供使用COOKIE实现记住用户名、密码的代码实例、难点注释。
文末有完整项目代码下载地址。
实现界面
初始登录界面
输入:
张三
123456
点击登录之后跳转界面:
可查看用户信息:
关闭所有页面,重新打开登录页面后保留上一次登录信息:
实现代码
login.jsp
<%&#64; page contentType&#61;"text/html;charset&#61;UTF-8" import&#61;"java.util.*,java.net.*" language&#61;"java" %>
<%String path &#61; request.getContextPath();String basePath &#61; request.getScheme() &#43; "://" &#43; request.getServerName() &#43; ":" &#43; request.getServerPort() &#43; path &#43; "/";%>
">
用户登录
<%request.setCharacterEncoding("utf-8");String userName &#61; "";String passWord &#61; "";//以下表示找到已存在的COOKIE对象COOKIE[] COOKIEs &#61; request.getCOOKIEs();if (COOKIEs !&#61; null && COOKIEs.length > 0) {for (COOKIE c : COOKIEs) {if (c.getName().equals("usernameC")) {userName &#61; URLDecoder.decode(c.getValue(), "utf-8");//使用URLDecoder解码}if (c.getName().equals("passwordC")) {passWord &#61; URLDecoder.decode(c.getValue(), "utf-8");}}}
%>
dologin.jsp
<%&#64; page import&#61;"java.text.CollationKey" %>
<%&#64; page import&#61;"java.net.*" %>
<%&#64; page import&#61;"sun.nio.cs.UTF_32" %>
<%&#64; page contentType&#61;"text/html;charset&#61;UTF-8" language&#61;"java" %>
<%String path &#61; request.getContextPath();String basePath &#61; request.getScheme() &#43; "://" &#43; request.getServerName() &#43; ":" &#43; request.getServerPort() &#43; path &#43; "/";
%>
">
登录成功&#xff01;
<%//作用是用指定的编码集去覆盖request对象中的默认的"ISO-8859-1"编码集&#xff0c;// 这样request.getParameter("")方法就会用新的编码集去解码&#xff0c;// 但是这个方法有一个条件&#xff0c;就是必须在第一次使用request时就要调用这个方法来设置编码集&#xff0c;否则该方法就会无效。//这里设置的是编码&#xff0c;之后在user中取值还需要解码&#xff08;或者转码&#xff09;&#xff1a;URLDecoder.decode(c.getValue(),"utf-8");//使用URLDecoder解码request.setCharacterEncoding("utf-8");//首先判断用户是否选择了记住登录状态String[] isUseCOOKIE &#61; request.getParameterValues("isUseCOOKIE");if (isUseCOOKIE !&#61; null && isUseCOOKIE.length > 0) {//把用户名和密码保存在COOKIE对象中String username &#61; URLEncoder.encode(request.getParameter("username"), "utf-8");//使用URLEncoder解决中文报错问题&#xff0c;在net包中String password &#61; URLEncoder.encode(request.getParameter("password"), "utf-8");COOKIE usernameCOOKIE &#61; new COOKIE("usernameC", username);COOKIE passwordCOOKIE &#61; new COOKIE("passwordC", password);//保存上面两个对象usernameCOOKIE.setMaxAge(864000);passwordCOOKIE.setMaxAge(864000);//该COOKIE对象保存多少秒&#xff08;在这里是设置生存期限为十天&#xff09;response.addCOOKIE(usernameCOOKIE);response.addCOOKIE(passwordCOOKIE);} else {//未选择记住&#xff0c;将COOKIE对象置为失效//以下表示找到已存在的COOKIE对象COOKIE[] COOKIEs &#61; request.getCOOKIEs();if (COOKIEs !&#61; null && COOKIEs.length > 0) {for (COOKIE c : COOKIEs) {if (c.getName().equals("usernameC") || c.getName().equals("passwordC")) {c.setMaxAge(0);//设置COOKIE失效response.addCOOKIE(c);//重新保存}}}}
%>
查看用户信息
users.jsp
<%&#64; page contentType&#61;"text/html;charset&#61;UTF-8" language&#61;"java" %>
<%String path &#61; request.getContextPath();String basePath &#61; request.getScheme() &#43; "://" &#43; request.getServerName() &#43; ":" &#43; request.getServerPort() &#43; path &#43; "/";
%>
">
用户信息
<%request.setCharacterEncoding("utf-8");String userName &#61; "";String passWord &#61; "";//以下表示找到已存在的COOKIE对象COOKIE[] COOKIEs &#61; request.getCOOKIEs();if (COOKIEs !&#61; null && COOKIEs.length > 0) {for (COOKIE c : COOKIEs) {if (c.getName().equals("usernameC")) {userName &#61; URLDecoder.decode(c.getValue(), "utf-8");//使用URLDecoder解码}if (c.getName().equals("passwordC")) {passWord &#61; URLDecoder.decode(c.getValue(), "utf-8");//使用URLDecoder解码}}}
%>
用户名&#xff1a;<%&#61;userName%>
密码&#xff1a;<%&#61;passWord%>
博主使用&#xff08;intellij idea&#43;tomcat&#xff09;
github项目地址&#xff1a;https://github.com/StathamWYJ/COOKIEDemo