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>
     &nbsp;&nbsp;&nbsp;&nbsp;
     <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>

 

posted on 2018-08-21 16:35  王育奕  阅读(133)  评论(0编辑  收藏  举报

导航