zoukankan      html  css  js  c++  java
  • jsp学习与提高(三)——JSP Cookie 处理

    1.cookie是什么

    Cookie是存储在客户机的文本文件,它们保存了大量轨迹信息。在servlet技术基础上,JSP显然能够提供对HTTP cookie的支持。

    通常有三个步骤来识别回头客:

    • 服务器脚本发送一系列cookie至浏览器。比如名字,年龄,ID号码等等。
    • 浏览器在本地机中存储这些信息,以备不时之需。
    • 当下一次浏览器发送任何请求至服务器时,它会同时将这些cookie信息发送给服务器,然后服务器使用这些信息来识别用户或者干些其它事情

    2.使用JSP设置Cookie

    (1)创建一个Cookie对象: 调用Cookie的构造函数,使用一个cookie名称和值做参数,它们都是字符串。

    Cookie cookie = new Cookie("key","value");

    请务必牢记,名称和值中都不能包含空格或者如下的字符:

    [ ] ( ) = , " / ? @ : ;

    (2) 设置有效期:调用setMaxAge()函数表明cookie在多长时间(以秒为单位)内有效。下面的操作将有效期设为了24小时。

    cookie.setMaxAge(60*60*24);

    (3) 将cookie发送至HTTP响应头中:调用response.addCookie()函数来向HTTP响应头中添加cookie。

    response.addCookie(cookie);


    3.实例演示

    main.jsp 文件代码如下所示:

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ page import="java.net.*" %>
    <%
       // 编码,解决中文乱码   
       String str = URLEncoder.encode(request.getParameter("name"),"utf-8");  
       // 设置 name 和 url cookie 
       Cookie name = new Cookie("name",
               str);
       Cookie url = new Cookie("url",
                  request.getParameter("url"));
    
       // 设置cookie过期时间为24小时。
       name.setMaxAge(60*60*24); 
       url.setMaxAge(60*60*24); 
    
       // 在响应头部添加cookie
       response.addCookie( name );
       response.addCookie( url );
    %>
    <html>
    <head>
    <title>设置 Cookie</title>
    </head>
    <body>
    
    <h1>设置 Cookie</h1>
    
    <ul>
    <li><p><b>网站名:</b>
       <%= request.getParameter("name")%>
    </p></li>
    <li><p><b>网址:</b>
       <%= request.getParameter("url")%>
    </p></li>
    </ul>
    </body>
    </html>

    以下是一个简单的 HTML 表单通过GET方法将客户端数据提交到 main.jsp 文件中,并设置 cookie:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>菜鸟教程(runoob.com)</title>
    </head>
    <body>
    
    <form action="main.jsp" method=GET>
    站点名: <input type="text" name="name">
    <br />
    网址: <input type="text" name="url" />
    <input type="submit" value="提交" />
    </form>
    
    </body>
    </html>


    4.使用 JSP 读取 Cookie

    想要读取cookie,您就需要调用request.getCookies()方法来获得一个javax.servlet.http.Cookie对象的数组,然后遍历这个数组,使用getName()方法和getValue()方法来获取每一个cookie的名称和值。

    <h3实例演示< h3="">

    让我们来读取上个例子中的cookie, 以下为 cookie.jsp 文件代码:

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ page import="java.net.*" %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>获取 Cookie</title>
    </head>
    <body>
    <%
       Cookie cookie = null;
       Cookie[] cookies = null;
       // 获取cookies的数据,是一个数组
       cookies = request.getCookies();
       if( cookies != null ){
          out.println("<h2> 查找 Cookie 名与值</h2>");
          for (int i = 0; i < cookies.length; i++){
             cookie = cookies[i];
            
             out.print("参数名 : " + cookie.getName());
             out.print("<br>");
             out.print("参数值: " + URLDecoder.decode(cookie.getValue(), "utf-8") +" <br>");
             out.print("------------------------------------<br>");
          }
      }else{
          out.println("<h2>没有发现 Cookie</h2>");
      }
    %>
    </body>
    </html>


    5.使用JSP删除Cookie

    使用JSP删除Cookie

    删除cookie非常简单。如果您想要删除一个cookie,按照下面给的步骤来做就行了:

    • 获取一个已经存在的cookie然后存储在Cookie对象中。
    • 将cookie的有效期设置为0。
    • 将这个cookie重新添加进响应头中。

    实例演示

    下面的程序删除一个名为"name"的cookie,当您第二次运行cookie.jsp时,name 将会为 null。

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ page import="java.net.*" %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>获取 Cookie</title>
    </head>
    <body>
    <%
       Cookie cookie = null;
       Cookie[] cookies = null;
       // 获取当前域名下的cookies,是一个数组
       cookies = request.getCookies();
       if( cookies != null ){
          out.println("<h2> 查找 Cookie 名与值</h2>");
          for (int i = 0; i < cookies.length; i++){
             cookie = cookies[i];
             if((cookie.getName( )).compareTo("name") == 0 ){
                cookie.setMaxAge(0);
                response.addCookie(cookie);
                out.print("删除 Cookie: " + 
                cookie.getName( ) + "<br/>");
             }
             out.print("参数名 : " + cookie.getName());
             out.print("<br>");
             out.print("参数值: " + URLDecoder.decode(cookie.getValue(), "utf-8") +" <br>");
             out.print("------------------------------------<br>");
          }
      }else{
          out.println("<h2>没有发现 Cookie</h2>");
      }
    %>
    </body>
    </html>
  • 相关阅读:
    NOKIA自己掌控的新的智能手机系统ASHA
    NOKIA自己掌控的新的智能手机系统ASHA
    双系统启动菜单修复工具(NTBootAutofix)v2.5.7 绿色版
    双系统启动菜单修复工具(NTBootAutofix)v2.5.7 绿色版
    如何用ghost安装双系统(WinXP+Win7)
    摄影还能这么玩!Jamie Beck创意GIF摄影
    线程知识结构概览
    window多线程操作文件
    多线程内存的表现形式
    进程的调度的理解
  • 原文地址:https://www.cnblogs.com/tongcc/p/10964892.html
Copyright © 2011-2022 走看看