知识点汇总
在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>