cookie与session学习(二)
Cookie与Session的小练习
app1(练习一:用cookie获取请求参数name,若存在请求信息则打印欢迎信息,否则重定向到login.jsp)
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <% //1.若可以获取到请求参数name,则打印出欢迎信息,并存储到cookie中,并设置cookie的最大时效为30s String name = request.getParameter("name"); if (name != null && name.trim().equals("")) { Cookie cookie = new Cookie("name", name); cookie.setMaxAge(30); response.addCookie(cookie); } else { //2.从Cookie中读取用户信息,若存在则打印欢迎信息。 Cookie[] cookies = request.getCookies(); if (cookies != null && cookies.length > 0) { for (Cookie cookie : cookies) { String cookieName = cookie.getName(); if ("name".equals(cookieName)) { String val = cookie.getValue(); name = val; } } } if (name != null && !name.trim().equals("")) { out.println("Hello:" + name); } else { //若既没有请求参数,也没有cookie,则重定向到login.jsp response.sendRedirect("login.jsp"); } } %> </body> </html>
login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <form method="post" action="index.jsp"> name:<input type="text" name="name"/><br><br> password:<input type="password"/><br><br> <input type="submit" value="Submit"/> <input type="reset" value="reset"> </form> </body> </html>
练习二:用cookie实现浏览图书并显示最近浏览的五本图书
books.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@page import="java.util.List"%> <%@page import="java.util.ArrayList"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <h4>Book Detail Page</h4> Book:<%=request.getParameter("book")%> <br> <br> <a href="books.jsp">Return</a> <% String book = request.getParameter("book"); //把书的信息以Cookie的方式传回给浏览器,删除一个Cookie //1.确定要删除的Cookie:YUYI_Book_开头的Cookie数量 //前提YUYI_Book开头的Cookie数量大于等于5 Cookie[] cookies = request.getCookies(); //保存所有的YUYI_Book开头的Cookie List<Cookie> bookCookies = new ArrayList<Cookie>(); //用来保存book.jsp传入的book匹配的那个Cookie Cookie tempCookie = null; if (cookies != null && cookies.length > 0) { for (Cookie c : cookies) { String cookieName = c.getName(); if (cookieName.startsWith("YUYI_Book_")) { bookCookies.add(c); if (c.getValue().equals(book)) { tempCookie = c; } } } } //若从books.jsp页面传入的book不在YUYI_Book的Cookie中删除较早的那个Cookie if (bookCookies.size() >= 5 && tempCookie == null) { tempCookie = bookCookies.get(0); } //若在其中,则删除该cookie if (tempCookie != null) { tempCookie.setMaxAge(0); response.addCookie(tempCookie); } //2.把从books.jsp传入的book作为一个Cookie返回 Cookie cookie = new Cookie("YUYI_Book_" + book, book); response.addCookie(cookie); %> </body> </html>
练习三:用session实现重新登录和注销操作
login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> SessionID:<%=session.getId()%> <br> <br> IsNew:<%=session.isNew()%> <br> <br> MaxInactiveInterval:<%=session.getMaxInactiveInterval()%> <br> <br> CreateTime:<%=session.getCreationTime()%> <br> <br> LastAccessTime:<%=session.getLastAccessedTime()%> <br> <br> <% Object name = session.getAttribute("name"); if (name == null) { name = ""; } %> <form action="hello.jsp" method="post"> name:<input type="text" name="name" value="<%=name%>" /> <input type="submit" value="Submit"> </form> </body> </html>
hello.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> SessionID:<%=session.getId()%> <br> <br> IsNew:<%=session.isNew()%> <br> <br> MaxInactiveInterval:<%=session.getMaxInactiveInterval()%> <br> <br> CreateTime:<%=session.getCreationTime()%> <br> <br> LastAccessTime:<%=session.getLastAccessedTime()%> <br> <br> Hello:<%=request.getParameter("name") %> <br> <br> <% session.setAttribute("name", request.getParameter("name")); %> <a href="login.jsp">重新登录</a> <a href="logout.jsp">注销</a> </body> </html>
logout.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> SessionID:<%=session.getId()%> <br> <br> IsNew:<%=session.isNew()%> <br> <br> MaxInactiveInterval:<%=session.getMaxInactiveInterval()%> <br> <br> CreateTime:<%=session.getCreationTime()%> <br> <br> LastAccessTime:<%=session.getLastAccessedTime()%> <br> <br> Bye:<%=session.getAttribute("name") %> <br> <br> <a href="login.jsp">重新登录</a> <% session.invalidate(); %> </body> </html>
练习四:用Cookie实现计时器功能,计算一分钟内第几次访问网页,如果一分钟内没有访问网页就显示第一次访问
cookiedemo.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <% //用cookie實現計時器統計一分鐘內的訪問次數,如果一分鐘內沒有訪問就顯示第一次訪問 Cookie thisCookie=null;//中間變量用來統計第幾次訪問 boolean cookieFound=false;//判斷整錯 Cookie[] cookies=request.getCookies(); if(cookies!=null){ //1.如果cookies不是空的話,用來判斷第幾次訪問 for(int i=0;i<cookies.length;i++){ thisCookie=cookies[i]; if(thisCookie.getName().equals("CookieCount")){ cookieFound=true; break; } } } out.println("<center><h1>Cookie計時器<h1></center>"); if(cookieFound){ //2.把thisCookie的值賦給cookieCount并實現輸出 int cookieCount=Integer.parseInt(thisCookie.getValue());//把第幾次訪問的值賦給cookieCount cookieCount++; out.println("<font color=blue size=+1>"); out.println("<p>這是一分鐘內第<B>"+cookieCount+"</B>次訪問本頁\n"); thisCookie.setValue(String.valueOf(cookieCount)); thisCookie.setMaxAge(60*1); response.addCookie(thisCookie); } if(cookieFound==false){ //3.如果cookies的值為空時說明一分鐘內沒有訪問,把thisCookie設置為一并命名為CookieCount out.println("<font color=blue size=+1>"); out.println("<p>你在近一分鐘內沒有訪問過本頁,現在是第一次訪問"); thisCookie=new Cookie("CookieCount","1"); thisCookie.setMaxAge(60*1); response.addCookie(thisCookie); } %> </body> </html>