知識點彙總
在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>