专栏首页java,python,数据结构,算法使用cookie来记录用户登录次数,为何次数不更新

使用cookie来记录用户登录次数,为何次数不更新

作者也是刚刚接触cookie以及session 首先贴上别人对cookie以及session的理解: cookie 和session 的区别:

1、cookie数据存放在客户的浏览器上,session数据放在服务器上。

2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗 考虑到安全应当使用session。

3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能 考虑到减轻服务器性能方面,应当使用COOKIE。

4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

5、所以个人建议: 将登陆信息等重要信息存放为SESSION 其他信息如果需要保留,可以放在COOKIE中 自己做的的是使用cookie来进行账户登录次数的统计。代码很简单但是自己遇到了一个问题,就是自己在更新了cookie的value值后,却一直得不到显示,看网上的资料,在cookie.setvlaue()之后又加上了两句话 cookie.setPath(request.getContextPath()); response.addCookie(cookie); 第二句话,我能理解,视为以防数据修改之后但没有替换,而选择直接替换掉整个cookie的键值对,第一句话看了网上的见解之后,说是定义cookie的使用范围,即该cookie键值对只能在当前的request的请求对象中使用,其他地方不能访问到。自己试了的确之后数据就能更新了,但是自己重新把这两句话删掉之后再次运行,之前的程序数据又能进行更新了,所以自己不是很理解,希望能有大佬赐教。 下面是我的代码 login.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP 'Login.jsp' starting page</title>
  </head>
  <body>
   <form action="Loginservlet" method="post">
          账户:<input type=text name="username"><br>
          密码:<input type=password name="password"><br>
          <input type=submit value="提交">
  </form>
  </body>
</html>

loginservlet.servlet

import java.io.IOException;
import java.io.PrintWriter;

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 {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public Loginservlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		this.doPost(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");  
        response.setCharacterEncoding("utf-8");  
        boolean flag=true;
        PrintWriter out=response.getWriter();
		Cookie []cookies=request.getCookies();
		String username=request.getParameter("username");
		int time=0;
		if(cookies!=null)
		{
			for(int i=0;i<cookies.length;i++)
			{
				Cookie cookie=cookies[i];
				if(cookie.getName().equals(username))
				{
					flag=false;
					System.out.println(cookie.getValue());
					cookie.setValue(""+(Integer.parseInt(cookie.getValue())+1));
					//cookie.setPath(request.getContextPath());
					//response.addCookie(cookie);
					time=Integer.parseInt(cookie.getValue());
					if(time<4)
					{
						out.write(username+",你已经登录"+time+"次了");	
					}
					if(time>3)
					{
						out.write("恭喜你获得一份礼物");
						out.write(username+",你已经登录"+time+"次了");	
					}
					break;
				}
			}

		}
		if(cookies==null||flag)
		{
			Cookie cookie1=new Cookie(request.getParameter("username"), Integer.toString(++time));
			//cookie1.setPath(request.getContextPath());
			response.addCookie(cookie1);
			username=cookie1.getName();
			//time=Integer.parseInt(cookie1.getValue());
		    out.write(username+",你已经登录"+time+"次了");	
		}
		if(request.getParameter("username").trim().equals(""))
			response.sendRedirect("Login.jsp");
		}

}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 蓝桥杯 k好数 java版

    如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数。求L位K进制数中K好数的数目。例如K = 4,L = 2的时候,所有...

    萌萌哒的瓤瓤
  • SpringBoot实现通过邮箱找回密码功能

    之前在大学里面做项目的时候碰到修改密码那一块的,自己当时都是做的很简单的逻辑,也想过怎么通过邮箱或者手机号这种进一步验证身份来修改密码,但是自己当时太菜了,也没...

    萌萌哒的瓤瓤
  • Shiro框架学习笔记(一)shiro简介以及工作流程

    不知道大家在做java web项目的时候有没有想过这个,虽然我们一般做项目时都会选择让用户先注册登录之后才能看到我们项目的具体内容,在知道了内部页面的路径之后我...

    萌萌哒的瓤瓤
  • MySQL 查找数据 SELECT

    SELECT 字段1,字段2 FROM 表名; SELECT 表名.字段名 FROM 表名; 别名 SELECT 字段 AS 别名 FROM 表名; 偏移量 S...

    康怀帅
  • The Negotiator

    主人公:丹尼罗曼。一人与SWAT甚至FBI周旋,最终在克利斯·萨宾的帮助下证明了自己的清白。

    libo1106
  • 访问网站首页 index.php,跟着执行流程走一遍

    访问网站首页 index.php,跟着执行流程走一遍,细节不深究,碰到不太明白的变量,直接var_dump()输出看看: 1. index.php—...

    公众号php_pachong
  • cookie、sessionStorage、localStorage

    版权声明:本文为博主原创文章,未经博主允许不得转载。 ...

    用户1212940
  • 冲上云霄-云从业人员随笔(1)

    从入职互联网公司到现在,整好四年了,我正式接触虚拟化是零九年,花了三年,终于实习工作的鞭打下驶入了虚拟化赛道,在虚拟化赛道期间我又前前后后做了十几个项目...

    StatLee
  • 4个月从0到1.62亿,埋头攒钱的人不知道的赚钱秘密

    三哥
  • 付费广告的计费模式

    薛定喵君

扫码关注云+社区

领取腾讯云代金券