javaweb 使用Cookie获取上次访问时间

3 篇文章 0 订阅

javaweb的基础练习

 

先介绍Cookie对象主要用到的方法!

getCookies()    用request来获取Cookie,返回的是一个Cookie数组,也就是所有的cookie的值
Cookie[] cookies = req.getCookies();
getName()   获取到cookie数组,就能获取数组里面的cookie名字
String name = cookie.getName();
getValue()    获取数组里面的cookie的值
String value = cookie.getValue();

代码:

@WebServlet("/cookieTest")
public class CookieTest extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //设置响应的消息体的数据格式以及编码
        resp.setContentType("text/html;charset=utf-8");
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //1.获取所有Cookie
        Cookie[] cookies = req.getCookies();

        boolean flag = false;
        //2.遍历cookie数组
        if(cookies != null && cookies.length > 0){
            for (Cookie cookie : cookies) {
                //3.获取cookie的名称
                String name = cookie.getName();

                //4.判断名称是否是:lastTime
                if("lastTime".equals(name)){
                    //有该Cookie,不是第一次访问
                    flag = true;
                    //响应数据
                    //获取Cookie的value,时间
                    String value = cookie.getValue();
                    //把字符串转换long类型,再转日期类型,然后格式化时间
                    long l = Long.parseLong(value);
                    String time = sdf.format(new Date(l));

                    resp.getWriter().write("<h1>欢迎回来,您上次访问时间为:"+time+"</h1>");
                    //设置Cookie的value
                    //获取当前时间的字符串,重新设置Cookie的值,重新发送cookie
                    long millis = System.currentTimeMillis();
                    cookie.setValue(millis+"");
                    //设置cookie的存活时间
                    cookie.setMaxAge(60 * 60 * 24 * 30);//一个月
                    //相应到Cookie
                    resp.addCookie(cookie);
                    break;
                }
            }
        }


        if(flag == false){
            //没有,第一次访问
            //设置Cookie的value
            //获取当前时间的字符串,重新设置Cookie的值,重新发送cookie
            long timeMillis = System.currentTimeMillis();

            Cookie c = new Cookie("lastTime",timeMillis+"");
            //设置cookie的存活时间
            c.setMaxAge(60 * 60 * 24 * 30);//一个月
            resp.addCookie(c);
            resp.getWriter().write("<h1>hello,欢迎首次访问</h1>");
        }

    }

 

效果:

再次刷新之后

怎么清除cookie??

按F12 进入开发者模式 

找到application > Cookies  ,右键可以清除cookie了

 

 

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 使用cookie免登录的原理是在用户登录成功后,将用户的登录信息保存在cookie中,然后在用户下一次访问网站时,通过读取cookie中的信息来判断用户是否已经登录过,如果已经登录过,则直接跳转到用户的个人主页,否则跳转到登录页面。在JavaWeb中,可以通过使用Servlet或者JSP来实现cookie的操作,具体实现方式可以参考相关的教程和文档。 ### 回答2: Java Web应用程序使用Cookie(小型文本文件)来实现无需登录的功能。当用户进行身份验证后,应用程序将将用户的标识符和其他信息设置为cookie值,并将其发送回用户的Web浏览器。Cookie存储在用户的计算机上,并在用户访问应用程序时随同请求一起发送。 应用程序可以在访问时读取cookie值,以便自动识别和身份验证用户。如果cookie值过期,则用户需要重新登录。 为了实现无需登录,应用程序需要在用户第一次登录时设置cookie值。通常,应用程序将用户的身份验证信息保存在数据库中,并在成功验证后创建并设置cookie值。在随后的请求中,应用程序将读取cookie值,并将用户作为已验证用户处理。这使得用户无需在每次访问应用程序时都进行身份验证。 然而,使用cookie来实现无需登录功能也存在一些安全风险。黑客可以轻松地访问cookie值,并使用它们冒充用户身份。因此,应用程序需要采取措施来保护cookie值,例如通过加密和限制cookie的生命周期。此外,应用程序应该注意避免使用敏感信息作为cookie值。 ### 回答3: cookie是一种在客户端存储数据的机制,使用它可以帮助我们实现免登录的功能。在JavaWeb中,我们可以使用Cookie类的实例对象来创建、发送和接收cookie数据。 首先,在用户登录成功时,我们可以将用户的登录信息存储到cookie中,以便下次用户访问网站时可以快速进行身份验证。这可以通过以下代码实现: ```java Cookie userCookie = new Cookie("user", "username"); userCookie.setMaxAge(60*60*24*30); //设置cookie有效期为30天 response.addCookie(userCookie); //将cookie发送给客户端 ``` 这段代码创建了一个名为“user”的cookie,并将其值设置为“username”,有效期为30天。然后,我们将该cookie发送给客户端(即用户的浏览器)。 接下来,在用户下次访问网站时,我们可以从请求中获取cookie并进行身份验证。这可以通过以下代码实现: ```java Cookie[] cookies = request.getCookies(); if (cookies != null) { for (Cookie cookie : cookies) { if (cookie.getName().equals("user")) { String username = cookie.getValue(); //在这里进行身份验证等操作 break; } } } ``` 这段代码首先通过获取请求的cookie数组,然后遍历数组寻找名为“user”的cookie。如果找到了该cookie,则获取其值并进行身份验证等操作。 当然,我们还需要注意一些安全问题,例如将用户密码等敏感信息存储到cookie中是不安全的。此外,如果cookie被篡改了,也可能导致身份验证失败。因此,在实现免登录功能时,我们需要进行一定的安全性考虑和防范措施。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值