Cookie实例——记住用户名

小鱼儿 2022-06-18 09:20 243阅读 0赞

1.简单流程图

在网站登录中经常会有 记住用户名 这一操作,利用Cookie便可以实现,其间单的流程如下

Center

2.利用代码实现

新建一个Login的Servelet,写入下面代码

  1. public void doGet(HttpServletRequest request, HttpServletResponse response)
  2. throws ServletException, IOException {
  3. response.setContentType("text/html;charset=UTF-8");
  4. PrintWriter out = response.getWriter();
  5. String userName ="";
  6. String checked = "";
  7. //得到客户端保存的Cookie数据
  8. Cookie[] cookies = request.getCookies();
  9. for (int i = 0;cookies!=null && i < cookies.length; i++) {
  10. if("userName".equals(cookies[i].getName())){
  11. userName = cookies[i].getValue();
  12. checked = "checked='checked'";
  13. }
  14. }
  15. out.write("<form action='"+request.getContextPath()+"/servlet/DoLogin' method='post'>");
  16. out.write("用户名:<input type='text' name='userName' value='"+userName+"'/><br/>");
  17. out.write("密码:<input type='password' name='pwd'/><br/>");
  18. out.write("<input type='checkbox' name='remember' "+checked+" />记住用户名<br/>");
  19. out.write("<input type='submit' value='登录'/><br/>");
  20. out.write("</form>");
  21. }

再新建一个DoLogin方法

  1. public void doGet(HttpServletRequest request, HttpServletResponse response)
  2. throws ServletException, IOException {
  3. request.setCharacterEncoding("UTF-8");
  4. response.setContentType("text/html;charset=UTF-8");
  5. PrintWriter out = response.getWriter();
  6. //获取表单数据
  7. String userName = request.getParameter("userName");
  8. String pwd = request.getParameter("pwd");
  9. String remember = request.getParameter("remember");
  10. Cookie ck = new Cookie("userName", userName);
  11. ck.setPath("/");
  12. //处理业务逻辑
  13. //分发转向
  14. if("tom".equals(userName)&&"123".equals(pwd)){
  15. if(remember!=null){
  16. ck.setMaxAge(Integer.MAX_VALUE);//设置Cookie的有效保存时间
  17. }else{
  18. ck.setMaxAge(0);//删除 Cookie
  19. }
  20. response.addCookie(ck);//将Cookie写回到客户端
  21. out.write("登录成功!");
  22. }else{
  23. out.write("登录失败!");
  24. //设置2秒跳到重新登录
  25. response.setHeader("refresh", "2;url="+request.getContextPath()+"/servlet/Login");
  26. }

得到的结果为:

Center 1

登录后显示成功登录

再次访问时,“用户名”和“登录用户名”均自动填充

Center 2

3.总结

以上便是利用Cookie的知识来实现的一个网站经常拥有的功能,如果有错误,请提出,谢谢。

发表评论

表情:
评论列表 (有 0 条评论,243人围观)

还没有评论,来说两句吧...

相关阅读

    相关 git记住用户名和密码

    在使用git时,如果用的是HTTPS的方式,则每次提交,都会让输入用户名和密码,久而久之,就会感觉非常麻烦,那么该如何解决呢? 方式一:使用SSH,添加ssh key。