javaWeb知识学习——Cookie理解

知识点汇总

在JavaWeb规范中使用Cookie类代表cookie
Cookie:1.完成会话跟踪的一种机制,采用的是在客户端保持HTTP状态信息的方案
2. Cookie是在浏览器访问WEB服务器的某个资源时,由WEB服务器在HTTP响应消息头,
中附带传送给浏览器的小文本文件。
3.如果web浏览器保存了Cookie,在以后每次访问该web服务器时都会在HTTP请求头
中将这个Cookie回传给web服务器
cookie的作用:①自动登录②显示浏览过的商品的信息
代码示例:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>cookie</title>
</head>
<body>
<%
    Cookie [] cookies=request.getCookies();
    if(cookies!=null && cookies.length>0){
        for(Cookie cook: cookies){
            out.print(cook.getName()+"\t"+cook.getValue());
            out.print("<hr>");
        }
    }else {
    //1.创建一个Cookie对象
    Cookie cookie=new Cookie("name","Hew");
    //setMaxAge:设置Coolie的最大时效以秒为单位若为0表示立即删除若为负数表示不存储该cookie
        cookie.setMaxAge(10);
    //2.调用response的方法将cookie传给客户端
    response.addCookie(cookie);
    //获取cookie
    }
%>
</body>
</html>

一:自动登录示例

1.创建index.jsp及响应的index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>login</title>
</head>
<body>
<form action="index.jsp" method="post">
    name:<input type="text" name="name"/>
    <input type="submit" value="submit"/>
</form>
</body>
</html>

index.jsp如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>index</title>
</head>
<body>
<%
    String name = request.getParameter("name");
    if (name != null && !name.trim().equals(" ")) {
        Cookie cookie = new Cookie("name", name);
        cookie.setMaxAge(30);
        response.addCookie(cookie);
    } else {
        Cookie[] cookies = request.getCookies();
        if (cookies != null && cookies.length > 0) {
            for (Cookie cookie : cookies) {
                if ("name".equals(cookie.getName())) {
                    String val = cookie.getValue();
                    name = val;
                }
            }
        }
    }
    if (name != null && !name.trim().equals(" ")) {
        out.print("Hello: " + name);
    } else {
        response.sendRedirect("/javaweb2/login.jsp");
    }
%>
</body>
</html>

二:浏览记录示例

创建books.jsp及book.jsp文件代码如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Books</title>
</head>
<body>
<h3>书籍页面</h3>
<a href="book.jsp?book=Java">Java</a><br><br>
<a href="book.jsp?book=JavaWeb">JavaWeb</a><br><br>
<a href="book.jsp?book=Ajax">Ajax</a><br><br>
<a href="book.jsp?book=Python">Python</a><br><br>
<a href="book.jsp?book=Js">Js</a><br><br>
<a href="book.jsp?book=Mysql">Mysql</a><br><br>
<a href="book.jsp?book=SqlServer">SqlServer</a><br><br>
<a href="book.jsp?book=Oracle">Oracle</a><br><br>
<br><br>
<%
    //获取所有的cookie
    Cookie[] cookies=request.getCookies();
    //显示cookieValue
     if(cookies!=null && cookies.length>0){
         for(Cookie c:cookies){
             String cookieName=c.getName();
             if(cookieName.startsWith("BOOK_"))
             {
                 out.println(c.getValue());
                 out.print("<br>");
             }
         }
     }
%>
</body>
</html>

book.jsp如下:

<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Book Detail</title>
</head>
<body>
<h3>Book Detail Page</h3>
Book:<%=request.getParameter("book")%>
<hr>
<a href="books.jsp">返回</a>
<%
String book=request.getParameter("book");
Cookie[] cookies=request.getCookies();
//用来保存所有的bookCookies
    List<Cookie> bookCookies=new ArrayList<>();
    //用来保存和传入的book匹配的Cookie
    Cookie tempCookie=null;
    if(cookies!=null && cookies.length>0){
        for(Cookie c:cookies){
            String cookieName=c.getName();
            if(cookieName.startsWith("BOOK_")){
                bookCookies.add(c);
                if(c.getValue().equals(book)){
                    tempCookie=c;
                }
            }
        }
    }
    //判断是否大于5个
    if(bookCookies.size()>=5 && tempCookie==null){
            tempCookie=bookCookies.get(0);
    }
    //判断后删除Cookie
    if(tempCookie!=null){
        tempCookie.setMaxAge(0);
        response.addCookie(tempCookie);
    }
    //把books页面传入的book作为一个Cookie返回
    Cookie cookie=new Cookie("BOOK_"+book,book);
    response.addCookie(cookie);
%>
</body>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值