Java Web 基于Cookie记住用户名

mac2022-06-30  30

项目目录结构: login.html文件

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>xxx登录</title> </head> <script type="text/javascript"> //取出的字符串是name1=value1;name2=value2这种格式,所以以分号分割 var cookies = document.cookie.split(';'); //通过mkey获取浏览器中的cookie值 function getCK(mkey) { //对于每个cookie都有name、value,并且是name=value格式的字符串 for(var i = 0;i < cookies.length; ++i){ //以等号进行切割 var kv = cookies[i].split('='); //key有可能空字符串 if(kv[0].trim() == mkey){ //返回mkey这个cookie对应的value return kv[1].trim(); } } return ''; } //html加载的时候执行该函数 window.onload = function(){ //获取userName这个cookie对应的值 var userNname = getCK('userName'); //获取remember这个cookie对应的值 var remember = getCK('remember'); //如果remember在cookie中保留的是勾选上 if (remember == 'true') { //把userName放到用户名输入框 var userNameInput = document.getElementById('userName'); userNameInput.value = userNname; //把html页面的记住用户名勾选上 var rememberInput = document.getElementById('remember'); rememberInput.checked="checked"; } } </script> <body> <!-- 以post请求的方式发送表单 --> <form action = "/Cookie_Test/LoginServlet" method="post"> <table border="1"> <tr> <td>用户名</td> <td><input type="text" name = "userName" id = "userName"></td> </tr> <tr> <td>密码</td> <td><input type="password" name = "password" id = "password"></td> </tr> <tr> <td colspan="2"><input type="checkbox" name = "remember" id = "remember" value="true">记住用户名</td> </tr> <tr> <td colspan="2"><input type="submit">提交</td> </tr> </table> </form> </body> </html> package cn.hestyle.web.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class LoginServlet */ @WebServlet("/LoginServlet") public class LoginServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //获取表单中的参数 String userName = request.getParameter("userName"); String password = request.getParameter("password"); String remember = request.getParameter("remember"); //这里只是方便演示,所以写死了只有一个账号 if ("hestyle".equals(userName) && "123456".equals(password)) { response.setHeader("content-type", "text/html;charset=utf-8"); response.getWriter().write("好久不见啊 " + userName); } else { response.setHeader("content-type", "text/html;charset=utf-8"); response.getWriter().write("用户名或者密码 错误!" + userName); } if ("true".equals(remember)) { //如果前端界面勾选了记住用户名,设置cookie Cookie cookie1 = new Cookie("userName", userName); //设置cookie存活时间,60秒*10,十分钟 cookie1.setMaxAge(60 * 10); response.addCookie(cookie1); Cookie cookie2 = new Cookie("remember", remember); cookie2.setMaxAge(60 * 10); response.addCookie(cookie2); } else { //如果用户没有勾选记住用户名,这时我们就要把上面的设置的cookie强制清除 Cookie[] cookies = request.getCookies(); if (cookies.length > 0) { for (Cookie cookie : cookies) { if ("userName".equals(cookie.getName())) { //设置最大存活时间为0 cookie.setMaxAge(0); } if ("remember".equals(cookie.getName())) { cookie.setMaxAge(0); } } } } } }

运行结果: ①不勾选记住用户名 ②勾选记住用户名 这个小demo虽然很简单,但是对于理解Cookie非常有帮助。

最新回复(0)