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>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章