c.getName().equals("username")怎么解释

来源:6-4 案例:Cookie在登录中的应用

_Everglow

2017-01-10 12:59

for(Cookie c:cookies){

if(c.getName().equals("username")

c.getName()获取的是什么

为什么要和字符串username作equals比较

写回答 关注

2回答

  • qq_这是只仓鼠_0
    2017-03-02 22:05:50

    c.getName()获取的是什么 你就要搞清楚C是什么,显然C是Cookie对象,那么它的getName方法自然是获取它的名字,然后通过字符串的比较方法.equals确定是否是所需要的那个。因为获取到的Cookies是一个对象数组,所有的Cookie都在里面,而观察存放cookie的方法就能知道,是通过一个key值和对象组成的,而这个key值就是他的名字,我们需要的是取出名字为username 和 password的两个cookei对象,所以需要和username以及password对比。

  • _Everglow
    2017-01-10 13:19:58

    1.设置cookie到客户端
            Cookie c1 = new Cookie("username","hzh");
                response.addCookie(c1);
                
                Cookie c2 = new Cookie("password","123");
                //设置生命周期为1小时,秒为单位
                c2.setMaxAge(3600);
                response.addCookie(c2);
                
                response.getWriter().print("ok");

    查看此时的cookie文件,发现只写入了password,因为此时未给 username设置生命周期,它还在客户端的内存中,并为写到文件中(此时客户端关闭此浏览器窗口,就丢失了),想写到客户端,需要加入c1.setMaxAge(3600)在 response.addCookie(c1);之前

    以下是写入我电脑中的cookie

    http://img.mukewang.com/58746ef60001af3603370301.jpg

     2.读取cookie文件

    Cookie[] cookies = request.getCookies();
                for(Cookie c :cookies ){
                    System.out.println(c.getName()+"--->"+c.getValue());
                }

    控制台输出结果如下:
    username--->hzh
    password--->123
    JSESSIONID--->33BEAF95C526E0DDCF6A64990E533845


    注意:
     1.服务器可以向客户端写内容, 只能是文本内容
     2.客户端可以阻止服务器写入,禁用cookies
     3.只能读取自己webapp写入的东西


    qq_这是只...

    另外有一点没设置生命周期是失效了自动销毁了不是没写进去,虽然结果一样但是过程还是有所不同的

    2017-03-02 22:08:27

    共 1 条回复 >

JAVA遇见HTML——JSP篇

Java Web入门级教程JSP,带你轻松的学习JSP基础知识

248277 学习 · 3071 问题

查看课程

相似问题