WEB核心【记录网站登录人数,记录用户名案例】Cookie技术实现

举报
爱吃豆的土豆 发表于 2022/09/25 04:36:04 2022/09/25
【摘要】 目录 💂 个人主页: 爱吃豆的土豆🤟 版权: 本文由【爱吃豆的土豆】原创、在CSDN首发、需要转载请联系博主💬 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦 🏆人必有所执,方能有所成! 🐋希望大家多多支持😘一起进步呀! 案例1:记录网站登录人数 1.1:需求&a...

目录

  • 💂 个人主页: 爱吃豆的土豆
  • 🤟 版权: 本文由【爱吃豆的土豆】原创、在CSDN首发、需要转载请联系博主
  • 💬 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦
  • 🏆人必有所执,方能有所成!

  • 🐋希望大家多多支持😘一起进步呀!

案例1:记录网站登录人数

1.1:需求&分析

1.2:代码实现

案例2:记录用户名案例【进阶】

2.1:需求&分析

2.2:代码


案例1:记录网站登录人数

1.1:需求&分析

首先分析一波:

关键点:

因为request作用域太小,不能使用request传递

因为ServletContext作用域太大,使得多个用户的访问时间会相互覆盖,导致业务混乱,也不能用。

使用cookie,因为cookie针对的是某个浏览器的会话,一个浏览器cookie保存在该浏览器上,不同用户之间不会有影响。

 流程图:(配个图详细理解一波)

 

1.2:代码实现


  
  1. @WebServlet({"/d1"})
  2. public class Demo1Servlet extends BaseServlet {
  3. public void visit() throws IOException {
  4. PrintWriter writer = getResponse().getWriter();
  5. //一、接收请求中的cookie,展示用户上次访问时间
  6. //1.1、获取浏览器发送的所有cookie
  7. Cookie[] arr = getRequest().getCookies();
  8. //1.2、查找是否存在lastVisitTime的cookie
  9. //1.2.1、设置一个cookie类型的开关 默认为null,不存在
  10. Cookie lastVisitTime = null;
  11. //1.2.2、只要数组arr不为null,遍历arr,查找名为lastVisitTime的cookie
  12. if(arr!=null){
  13. for (Cookie cookie : arr) {
  14. if(cookie.getName().equals("lastVisitTime")){
  15. //1.2.3、如果找到了,把他赋值给开关
  16. lastVisitTime = cookie;
  17. break;
  18. }
  19. }
  20. }
  21. //1.3、如果存在该cookie,展示上次访问时间
  22. if(lastVisitTime!=null){
  23. writer.write("上次访问时间是:"+new Date(Long.parseLong(lastVisitTime.getValue())).toLocaleString());
  24. }else{
  25. //1.4、如果不存在该cookie,展示:第一次访问
  26. writer.write("您是第一次访问!");
  27. }
  28. //二、记录用户当前的访问时间,写出到响应头
  29. //2.1、获取当前时间的毫秒值
  30. long t = System.currentTimeMillis();
  31. //2.2、封装为cookie对象
  32. Cookie c = new Cookie("lastVisitTime", t + "");
  33. //2.3、设置cookie保存7天
  34. c.setMaxAge(60*60*24*7);
  35. //2.4、写出响应头
  36. getResponse().addCookie(c);
  37. }
  38. }

小结:

request.getCookies();//如果cookie都不存在,Null

Cookie的value是字符串类型,其他类型必须先转字符串才能保存,中文进行URL编码

案例2:记录用户名案例【进阶】

效果图:记住用户名效果图

 效果图:不记住用户名效果图

 

 

2.1:需求&分析

分析:

关键点:

  1. request.getParameter("");

  2. cookie技术。

  3. URL编码

  4. 重定向: return "redirect:/userLogin.jsp";

  5. <% %>

  6. cookie   setMaxAge(0);

流程图:

 

2.2:代码

userLogin.jsp


  
  1. <form method="post" action="/day11_1/hw">
  2. <input type="hidden" name="method" value="login"/>
  3. 用户名:<input type="text" name="username" />
  4. 密码:<input type="password" name="password"/>
  5. <input type="checkbox" name="remember" value="yes"/>记住用户名
  6. <input type="submit" value="登录"/>
  7. </form>

HomeworkServlet


  
  1. @WebServlet({"/hw"})
  2. public class HomeworkServlet extends BaseServlet {
  3. public String login() throws UnsupportedEncodingException {
  4. //1、接收参数
  5. HttpServletRequest request = getRequest();
  6. String username = request.getParameter("username");
  7. String remember = request.getParameter("remember");
  8. //2、判断remember,判断是否需要记录用户名
  9. Cookie rememberUsername = new Cookie("rememberUsername","");
  10. if(remember!=null){
  11. //3、如果remember不为null,记录用户名
  12. rememberUsername.setValue(URLEncoder.encode(username,"utf-8"));
  13. rememberUsername.setMaxAge(60*60*24*7);
  14. }else{
  15. //4、如果remember为null,删除已记录的用户名
  16. rememberUsername.setMaxAge(0);
  17. }
  18. //5、将用户名cookie写出响应头
  19. getResponse().addCookie(rememberUsername);
  20. //6、重定向回userLogin.jsp
  21. return "redirect:/userLogin.jsp";
  22. }
  23. }

userLogin.jsp


  
  1. <%
  2. //获取cookie中保存的用户名
  3. //1、获取所有cookie
  4. Cookie[] arr = request.getCookies();
  5. String username = null;
  6. //2、寻找保存用户名的cookie
  7. if(arr!=null){
  8. for (Cookie c : arr) {
  9. if(c.getName().equals("rememberUsername")){
  10. //3、把用户名取出来
  11. username = c.getValue();
  12. break;
  13. }
  14. }
  15. }
  16. //4、对URL编码进行解码操作
  17. if(username!=null){
  18. username = URLDecoder.decode(username,"utf-8");
  19. }
  20. %>
  21. <form method="post" action="/day11_1/hw">
  22. <input type="hidden" name="method" value="login"/>
  23. 用户名:<input type="text" name="username" value="<%=username==null?"":username%>"/>
  24. 密码:<input type="password" name="password"/>
  25. <input type="checkbox" name="remember" value="yes"
  26. <%
  27. if(username!=null){
  28. //说明用户肯定勾选了记录用户名该复选框直接回显勾选即可
  29. %>
  30. checked="checked"
  31. <%
  32. }
  33. %>
  34. />记住用户名
  35. <input type="submit" value="登录"/>
  36. </form>

小结:

回显:html特性: 文本框 value

复选框/单选框  checked="checked"

文本域:内容体

选择框:selected="selected"

嵌套java脚本,进行if判断,对html特性进行回显。

文章来源: qianxu.blog.csdn.net,作者:爱吃豆的土豆,版权归原作者所有,如需转载,请联系作者。

原文链接:qianxu.blog.csdn.net/article/details/125423318

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。