亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JSP > 正文

用jsp處理Cookie

2024-09-05 00:20:30
字體:
來源:轉載
供稿:網友
   9.1 cookie概述
   cookie是服務器發送給瀏覽器的體積很小的純文本信息,用戶以后訪問同一個web服務器時瀏覽器會把它們原樣發送給服務器。通過讓服務器讀取它原先保存到客戶端的信息,網站能夠為瀏覽者提供一系列的方便,例如在線交易過程中標識用戶身份、安全要求不高的場合避免用戶重復輸入名字和密碼、門戶網站的主頁定制、有針對性地投放廣告,等等。
  
     cookie的目的就是為用戶帶來方便,為網站帶來增值。雖然有著許多誤傳,事實上cookie并不會造成嚴重的安全威脅。cookie永遠不會以任何方式執行,因此也不會帶來病毒或攻擊你的系統。另外,由于瀏覽器一般只允許存放300個cookie,每個站點最多存放20個cookie,每個cookie的大小限制為4 kb,因此cookie不會塞滿你的硬盤,更不會被用作“拒絕服務”攻擊手段。
  
     9.2 servlet的cookie api
  
     要把cookie發送到客戶端,servlet先要調用new cookie(name,value)用合適的名字和值創建一個或多個cookie(2.1節),通過cookie.setxxx設置各種屬性(2.2節),通過response.addcookie(cookie)把cookie加入應答頭(2.3節)。
  
     要從客戶端讀入cookie,servlet應該調用request.getcookies(),getcookies()方法返回一個cookie對象的數組。在大多數情況下,你只需要用循環訪問該數組的各個元素尋找指定名字的cookie,然后對該cookie調用getvalue方法取得與指定名字關聯的值,這部分內容將在2.4節討論。
  
     9.2.1 創建cookie
  
     調用cookie對象的構造函數可以創建cookie。cookie對象的構造函數有兩個字符串參數:cookie名字和cookie值。名字和值都不能包含空白字符以及下列字符:
   [ ] ( ) = , " / ? @ : ;
  
  
  
  
     9.2.2 讀取和設置cookie屬性
  
     把cookie加入待發送的應答頭之前,你可以查看或設置cookie的各種屬性。下面摘要介紹這些方法:
  
  getcomment/setcomment
  獲取/設置cookie的注釋。
  getdomain/setdomain
  獲取/設置cookie適用的域。一般地,cookie只返回給與發送它的服務器名字完全相同的服務器。使用這里的方法可以指示瀏覽器把cookie返回給同一域內的其他服務器。注意域必須以點開始(例如.sitename.com),非國家類的域(如.com,.edu,.gov)必須包含兩個點,國家類的域(如.com.cn,.edu.uk)必須包含三個點。
  getmaxage/setmaxage
  獲取/設置cookie過期之前的時間,以秒計。如果不設置該值,則cookie只在當前會話內有效,即在用戶關閉瀏覽器之前有效,而且這些cookie不會保存到磁盤上。參見下面有關longlivedcookie的說明。
  getname/setname
  獲取/設置cookie的名字。本質上,名字和值是我們始終關心的兩個部分。由于httpservletrequest的getcookies方法返回的是一個cookie對象的數組,因此通常要用循環來訪問這個數組查找特定名字,然后用getvalue檢查它的值。
  getpath/setpath
  獲取/設置cookie適用的路徑。如果不指定路徑,cookie將返回給當前頁面所在目錄及其子目錄下的所有頁面。這里的方法可以用來設定一些更一般的條件。例如,somecookie.setpath("/"),此時服務器上的所有頁面都可以接收到該cookie。
  getsecure/setsecure
  獲取/設置一個boolean值,該值表示是否cookie只能通過加密的連接(即ssl)發送。
  getvalue/setvalue
  獲取/設置cookie的值。如前所述,名字和值實際上是我們始終關心的兩個方面。不過也有一些例外情況,比如把名字作為邏輯標記(也就是說,如果名字存在,則表示true)。
  getversion/setversion
  獲取/設置cookie所遵從的協議版本。默認版本0(遵從原先的netscape規范);版本1遵從rfc 2109 , 但尚未得到廣泛的支持。
     9.2.3 在應答頭中設置cookie
  
     cookie可以通過httpservletresponse的addcookie方法加入到set-cookie應答頭。下面是一個例子:
   cookie usercookie = new cookie("user", "uid1234");
   response.addcookie(usercookie);
  
  
  
  
     9.2.4 讀取保存到客戶端的cookie
  
     要把cookie發送到客戶端,先要創建cookie,然后用addcookie發送一個set-cookie http應答頭。這些內容已經在上面的2.1節介紹。從客戶端讀取cookie時調用的是httpservletrequest的getcookies方法。該方法返回一個與http請求頭中的內容對應的cookie對象數組。得到這個數組之后,一般是用循環訪問其中的各個元素,調用getname檢查各個cookie的名字,直至找到目標cookie。然后對這個目標cookie調用getvalue,根據獲得的結果進行其他處理。
  
     上述處理過程經常會遇到,為方便計下面我們提供一個getcookievalue方法。只要給出cookie對象數組、cookie名字和默認值,getcookievalue方法就會返回匹配指定名字的cookie值,如果找不到指定cookie,則返回默認值。
  
     9.3 幾個cookie工具函數
  
     下面是幾個工具函數。這些函數雖然簡單,但是,在和cookie打交道的時候很有用。
  
     9.3.1 獲取指定名字的cookie值
  
     該函數是servletutilities.java的一部分。getcookievalue通過循環依次訪問cookie對象數組的各個元素,尋找是否有指定名字的cookie,如找到,則返回該cookie的值;否則,返回參數中給出的默認值。getcookievalue能夠在一定程度上簡化cookie值的提取。
   public static string getcookievalue(cookie[] cookies,
   string cookiename,
   string defaultvalue) {
   for(int i=0; i<cookies.length; i++) {
   cookie cookie = cookies[i];
   if (cookiename.equals(cookie.getname()))
   return(cookie.getvalue());
   }
   return(defaultvalue);
   }
  
  
  
  
     9.3.2自動保存的cookie
  
     下面是longlivedcookie類的代碼。如果你希望cookie能夠在瀏覽器退出的時候自動保存下來,則可以用這個longlivedcookie類來取代標準的cookie類。
  package hall;
  
  import javax.servlet.http.*;
  
  public class longlivedcookie extends cookie {
   public static final int seconds_per_year = 60*60*24*365;
   public longlivedcookie(string name, string value) {
   super(name, value);
   setmaxage(seconds_per_year);
   }
  }
  
  
  
  
     9.4.實例:定制的搜索引擎界面
  
     下面也是一個搜索引擎界面的例子,通過修改前面http狀態代碼的例子得到。在這個servlet中,用戶界面是動態生成而不是由靜態html文件提供的。servlet除了負責讀取表單數據并把它們發送給搜索引擎之外,還要把包含表單數據的cookie發送給客戶端。以后客戶再次訪問同一表單時,這些cookie的值將用來預先填充表單,使表單自動顯示最近使用過的數據。
  
     searchenginesfrontend.java
  
     該servlet構造一個主要由表單構成的用戶界面。第一次顯示的時候,它和前面用靜態html頁面提供的界面差不多。然而,用戶選擇的值將被保存到cookie(本頁面將數據發送到customizedsearchengines servlet,由后者設置cookie)。用戶以后再訪問同一頁面時,即使瀏覽器是退出之后再啟動,表單中也會自動填好上一次搜索所填寫的內容。
  
     注意該servlet用到了servletutilities.java,其中getcookievalue前面已經介紹過,headwithtitle用于生成html頁面的一部分。另外,這里也用到了前面已經說明的longlivecookie類,我們用它來創建作廢期限很長的cookie。
  package hall;
  
  import java.io.*;
  import javax.servlet.*;
  import javax.servlet.http.*;
  import java.net.*;
  
  public class searchenginesfrontend extends httpservlet {
   public void doget(httpservletrequest request,
   httpservletresponse response)
   throws servletexception, ioexception {
   cookie[] cookies = request.getcookies();
   string searchstring =
   servletutilities.getcookievalue(cookies,
   "searchstring",
   "java programming");
   string numresults =
   servletutilities.getcookievalue(cookies,
   "numresults",
   "10");
   string searchengine =
   servletutilities.getcookievalue(cookies,
   "searchengine",
   "google");
   response.setcontenttype("text/html");
   printwriter out = response.getwriter();
   string title = "searching the web";
   out.println(servletutilities.headwithtitle(title) +
   "<body bgcolor=\"#fdf5e6\">\n" +
   "<h1 align=\"center\">searching the web</h1>\n" +
   "\n" +
   "<form action=\"/servlet/hall.customizedsearchengines\">\n" +
   "<center>\n" +
   "search string:\n" +
   "<input type=\"text\" name=\"searchstring\"\n" +
   " value=\"" + searchstring + "\"><br>\n" +
   "results to show per page:\n" +
   "<input type=\"text\" name=\"numresults\"\n" +
   " value=" + numresults + " size=3><br>\n" +
   "<input type=\"radio\" name=\"searchengine\"\n" +
   " value=\"google\"" +
   checked("google", searchengine) + ">\n" +
   "google |\n" +
   "<input type=\"radio\" name=\"searchengine\"\n" +
   " value=\"infoseek\"" +
   checked("infoseek", searchengine) + ">\n" +
   "infoseek |\n" +
   "<input type=\"radio\" name=\"searchengine\"\n" +
   " value=\"lycos\"" +
   checked("lycos", searchengine) + ">\n" +
   "lycos |\n" +
   "<input type=\"radio\" name=\"searchengine\"\n" +
   " value=\"hotbot\"" +
   checked("hotbot", searchengine) + ">\n" +
   "hotbot\n" +
   "<br>\n" +
   "<input type=\"submit\" value=\"search\">\n" +
   "</center>\n" +
   "</form>\n" +
   "\n" +
   "</body>\n" +
   "</html>\n");
   }
  
   private string checked(string name1, string name2) {
   if (name1.equals(name2))
   return(" checked");
   else
   return("");
   }
  }
  
  
  
  
     customizedsearchengines.java
  
     前面的searchenginesfrontend servlet把數據發送到customizedsearchengines servlet。本例在許多方面與前面介紹http狀態代碼時的例子相似,區別在于,本例除了要構造一個針對搜索引擎的url并向用戶發送一個重定向應答之外,還要發送保存用戶數據的cookies。
  package hall;
  
  import java.io.*;
  import javax.servlet.*;
  import javax.servlet.http.*;
  import java.net.*;
  
  public class customizedsearchengines extends httpservlet {
   public void doget(httpservletrequest request,
   httpservletresponse response)
   throws servletexception, ioexception {
  
   string searchstring = request.getparameter("searchstring");
   cookie searchstringcookie =
   new longlivedcookie("searchstring", searchstring);
   response.addcookie(searchstringcookie);
   searchstring = urlencoder.encode(searchstring);
   string numresults = request.getparameter("numresults");
   cookie numresultscookie =
   new longlivedcookie("numresults", numresults);
   response.addcookie(numresultscookie);
   string searchengine = request.getparameter("searchengine");
   cookie searchenginecookie =
   new longlivedcookie("searchengine", searchengine);
   response.addcookie(searchenginecookie);
   searchspec[] commonspecs = searchspec.getcommonspecs();
   for(int i=0; i<commonspecs.length; i++) {
   searchspec searchspec = commonspecs[i];
   if (searchspec.getname().equals(searchengine)) {
   string url =
   searchspec.makeurl(searchstring, numresults);
   response.sendredirect(url);
   return;
   }
   }
   response.senderror(response.sc_not_found,
   "no recognized search engine specified.");
   }
  
   public void dopost(httpservletrequest request,
   httpservletresponse response)
   throws servletexception, ioexception {
   doget(request, response);
   }
  }
  • 網站運營seo文章大全
  • 提供全面的站長運營經驗及seo技術!
  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
    俺去了亚洲欧美日韩| 精品国产乱码久久久久酒店| 亚洲精品欧美一区二区三区| 国产综合在线视频| 久久精品中文字幕一区| 国产精品久久久久久久午夜| 欧美成人在线网站| 日韩精品视频中文在线观看| 国产一区二区三区视频| 亚洲无亚洲人成网站77777| 亚洲天堂一区二区三区| 国内精品视频一区| 欧美极品少妇xxxxⅹ裸体艺术| 亚洲第一av网站| 欧美丝袜美女中出在线| 2020国产精品视频| 国产精品久久久久久婷婷天堂| 少妇精69xxtheporn| 日韩中文在线中文网三级| 国产精品福利在线观看网址| 一个人看的www欧美| 亚洲人在线观看| 久久免费福利视频| 久久精品久久久久久| 久久99久国产精品黄毛片入口| 国产精品精品久久久久久| 国产精品久久久久久久7电影| 日韩欧美综合在线视频| 亚洲欧美在线第一页| 久久免费国产精品1| 久久久久久一区二区三区| 91精品国产99| 69久久夜色精品国产69乱青草| 日韩免费观看高清| 国产精品成人va在线观看| 国产成人一区二| 26uuu另类亚洲欧美日本老年| 奇门遁甲1982国语版免费观看高清| 日韩中文在线不卡| 日韩av毛片网| 亚洲成avwww人| 琪琪亚洲精品午夜在线| 国产日韩中文字幕在线| 91精品久久久久久| 国产日韩在线看| 久久精品成人动漫| 亚洲欧洲日本专区| 国产久一一精品| 亚洲欧美日韩网| 亚洲成av人片在线观看香蕉| 国产美女精彩久久| 青青草原一区二区| 亚洲激情视频网| 国产91对白在线播放| 欧美在线视频免费播放| 中文字幕亚洲一区二区三区五十路| 亚洲精品网站在线播放gif| 精品视频久久久| 91po在线观看91精品国产性色| 亚洲精品久久久久中文字幕二区| 日韩av有码在线| 亚洲精品国产精品国自产观看浪潮| 91精品久久久久久综合乱菊| 欧美日韩国产专区| 国内精品美女av在线播放| 国产精品女主播| 亚洲免费伊人电影在线观看av| 国产精品色午夜在线观看| 国产玖玖精品视频| 国产精品扒开腿做爽爽爽男男| 欧美一性一乱一交一视频| 狠狠色狠狠色综合日日五| 96精品久久久久中文字幕| 国产一区二区黑人欧美xxxx| 精品中文字幕在线2019| 日韩精品在线观| 国内揄拍国内精品少妇国语| 在线观看国产精品91| 日韩国产精品亚洲а∨天堂免| 国产一级揄自揄精品视频| 色综合久久88色综合天天看泰| 国产精品视频大全| 国产免费一区二区三区香蕉精| 97在线免费观看视频| 日韩毛片在线观看| 欧美激情按摩在线| 日韩精品亚洲元码| 国产美女搞久久| 91精品国产综合久久久久久蜜臀| 欧美老女人性视频| 精品性高朝久久久久久久| 久久久久久久久久久久久久久久久久av| 日韩在线观看免费高清完整版| 欧美一级高清免费播放| 91精品久久久久久久久| 欧美在线精品免播放器视频| 国产精品美女www爽爽爽视频| 日韩在线视频观看| 精品国产电影一区| 91视频国产高清| 久久国产精品久久久久久| 日本韩国欧美精品大片卡二| 日韩精品中文字幕视频在线| 欧美大肥婆大肥bbbbb| 国产精品入口日韩视频大尺度| 欧美性一区二区三区| 91影院在线免费观看视频| 成人欧美在线视频| 国产精品免费观看在线| 亚洲免费视频观看| 亚洲最新av在线| 日韩在线视频二区| 色综合天天综合网国产成人网| 91精品综合视频| 国产精品视频1区| 国产精品高潮呻吟久久av野狼| 午夜精品一区二区三区视频免费看| 狠狠色香婷婷久久亚洲精品| 亚洲乱码一区av黑人高潮| www.欧美免费| 亚洲丝袜av一区| 在线播放亚洲激情| 伊人久久综合97精品| 91精品国产91久久久久久最新| 国产亚洲欧美日韩精品| 日韩欧美中文字幕在线播放| 亚洲精品美女在线观看| 国内免费久久久久久久久久久| 欧美精品18videosex性欧美| 国产视频精品久久久| 亚洲成人av中文字幕| 中文字幕日韩专区| 成人黄色免费片| 国产精品视频自在线| 成人性生交大片免费看小说| 亚洲最大av网| 91国自产精品中文字幕亚洲| 国外成人免费在线播放| 欧美激情va永久在线播放| 欧美在线免费观看| 亚洲伦理中文字幕| 久久视频中文字幕| 国内免费精品永久在线视频| 91av中文字幕| 欧美午夜精品伦理| 91视频九色网站| 最近2019免费中文字幕视频三| 亚洲福利在线观看| 国产日韩精品一区二区| 日韩在线激情视频| 久久在线免费观看视频| 日韩成人av网址| 亚洲最新视频在线| 国产欧美婷婷中文| 亚洲美女av网站| 久久99精品视频一区97| 国产免费一区二区三区香蕉精| 日韩午夜在线视频| 久久亚洲春色中文字幕| 精品福利樱桃av导航| 色妞色视频一区二区三区四区| 国产激情999| 这里只有精品视频在线| 韩日精品中文字幕|