欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
用JSP處理COOKIE
一、 Cookie概述
Cookie是服務(wù)器發(fā)送給瀏覽器的體積很小的純文本信息,用戶(hù)以后訪(fǎng)問(wèn)同一個(gè)Web服務(wù)器時(shí)瀏覽器會(huì )把它們原樣發(fā)送給服務(wù)器。通過(guò)讓服務(wù)器讀取它原先保存到客戶(hù)端的信息,網(wǎng)站能夠為瀏覽者提供一系列的方便,例如在線(xiàn)交易過(guò)程中標識用戶(hù)身份、安全要求不高的場(chǎng)合避免用戶(hù)重復輸入名字和密碼、門(mén)戶(hù)網(wǎng)站的主頁(yè)定制、有針對性地投放廣告,等等。
Cookie的目的就是為用戶(hù)帶來(lái)方便,為網(wǎng)站帶來(lái)增值。雖然有著(zhù)許多誤傳,事實(shí)上Cookie并不會(huì )造成嚴重的安全威脅。Cookie永遠不會(huì )以任何方式執行,因此也不會(huì )帶來(lái)病毒或攻擊你的系統。另外,由于瀏覽器一般只允許存放300個(gè)Cookie,每個(gè)站點(diǎn)最多存放20個(gè)Cookie,每個(gè) Cookie的大小限制為4 KB,因此Cookie不會(huì )塞滿(mǎn)你的硬盤(pán),更不會(huì )被用作“拒絕服務(wù)”攻擊手段。
二、 Servlet的Cookie API
要把Cookie發(fā)送到客戶(hù)端,Servlet先要調用new Cookie(name,value)用合適的名字和值創(chuàng )建一個(gè)或多個(gè)Cookie,通過(guò)cookie.setXXX設置各種屬性,通過(guò)response.addCookie(cookie)把cookie加入應答頭。
要從客戶(hù)端讀入Cookie,Servlet應該調用request.getCookies(),getCookies()方法返回一個(gè)Cookie對象的數組。在大多數情況下,你只需要用循環(huán)訪(fǎng)問(wèn)該數組的各個(gè)元素尋找指定名字的Cookie,然后對該Cookie調用getValue方法取得與指定名字關(guān)聯(lián)的值。
三、 創(chuàng )建Cookie
調用Cookie對象的構造函數可以創(chuàng )建Cookie。Cookie對象的構造函數有兩個(gè)字符串參數:Cookie名字和Cookie值。名字和值都不能包含空白字符以及下列字符:
[ ] ( ) = , " / ? @ : ;
四、 讀取和設置Cookie屬性
把Cookie加入待發(fā)送的應答頭之前,你可以查看或設置Cookie的各種屬性。下面摘要介紹這些方法:
getComment/setComment
獲取/設置Cookie的注釋。
getDomain/setDomain
獲取/設置Cookie適用的域。一般地,Cookie只返回給與發(fā)送它的服務(wù)器名字完全相同的服務(wù)器。使用這里的方法可以指示瀏覽器把Cookie返回給同一域內的其他服務(wù)器。注意域必須以點(diǎn)開(kāi)始(例如.sitename.com),非國家類(lèi)的域(如.com,.edu,.gov)必須包含兩個(gè)點(diǎn),國家類(lèi)的域(如.com.cn,.edu.uk)必須包含三個(gè)點(diǎn)。
getMaxAge/setMaxAge
獲取/設置Cookie過(guò)期之前的時(shí)間,以秒計。如果不設置該值,則Cookie只在當前會(huì )話(huà)內有效,即在用戶(hù)關(guān)閉瀏覽器之前有效,而且這些Cookie不會(huì )保存到磁盤(pán)上。參見(jiàn)下面有關(guān)LongLivedCookie的說(shuō)明。
getName/setName
獲取/設置Cookie的名字。本質(zhì)上,名字和值是我們始終關(guān)心的兩個(gè)部分。由于HttpServletRequest的getCookies方法返回的是一個(gè)Cookie對象的數組,因此通常要用循環(huán)來(lái)訪(fǎng)問(wèn)這個(gè)數組查找特定名字,然后用getValue檢查它的值。
getPath/setPath
獲取/設置Cookie適用的路徑。如果不指定路徑,Cookie將返回給當前頁(yè)面所在目錄及其子目錄下的所有頁(yè)面。這里的方法可以用來(lái)設定一些更一般的條件。例如,someCookie.setPath("/"),此時(shí)服務(wù)器上的所有頁(yè)面都可以接收到該Cookie。
getSecure/setSecure
獲取/設置一個(gè)boolean值,該值表示是否Cookie只能通過(guò)加密的連接(即SSL)發(fā)送。
getValue/setValue
獲取/設置Cookie的值。如前所述,名字和值實(shí)際上是我們始終關(guān)心的兩個(gè)方面。不過(guò)也有一些例外情況,比如把名字作為邏輯標記(也就是說(shuō),如果名字存在,則表示true)。
getVersion/setVersion
獲取/設置Cookie所遵從的協(xié)議版本。默認版本0(遵從原先的Netscape規范);版本1遵從RFC 2109 , 但尚未得到廣泛的支持。
五、 在應答頭中設置Cookie
Cookie可以通過(guò)HttpServletResponse的addCookie方法加入到Set-Cookie應答頭。下面是一個(gè)例子:
Cookie userCookie = new Cookie("user", "uid1234");
response.addCookie(userCookie);
六、 讀取保存到客戶(hù)端的Cookie
要把Cookie發(fā)送到客戶(hù)端,先要創(chuàng )建Cookie,然后用addCookie發(fā)送一個(gè)Set-Cookie HTTP應答頭。這些內容已經(jīng)在上面介紹。從客戶(hù)端讀取Cookie時(shí)調用的是HttpServletRequest的getCookies方法。該方法返回一個(gè)與HTTP請求頭中的內容對應的Cookie對象數組。得到這個(gè)數組之后,一般是用循環(huán)訪(fǎng)問(wèn)其中的各個(gè)元素,調用getName檢查各個(gè)Cookie的名字,直至找到目標Cookie。然后對這個(gè)目標Cookie調用getValue,根據獲得的結果進(jìn)行其他處理。
上述處理過(guò)程經(jīng)常會(huì )遇到,為方便計下面我們提供一個(gè)getCookieValue方法。只要給出Cookie對象數組、Cookie名字和默認值, getCookieValue方法就會(huì )返回匹配指定名字的Cookie值,如果找不到指定Cookie,則返回默認值。
七、幾個(gè)Cookie工具函數
下面是幾個(gè)工具函數。這些函數雖然簡(jiǎn)單,但是,在和Cookie打交道的時(shí)候很有用。
1、 獲取指定名字的Cookie值
getCookieValue通過(guò)循環(huán)依次訪(fǎng)問(wèn)Cookie對象數組的各個(gè)元素,尋找是否有指定名字的Cookie,如找到,則返回該Cookie的值;否則,返回參數中給出的默認值。getCookieValue能夠在一定程度上簡(jiǎn)化 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);
}
2、自動(dòng)保存的Cookie
下面是LongLivedCookie類(lèi)的代碼。如果你希望Cookie能夠在瀏覽器退出的時(shí)候自動(dòng)保存下來(lái),則可以用這個(gè)LongLivedCookie類(lèi)來(lái)取代標準的Cookie類(lèi)。
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);
}
}
八、實(shí)例:定制的搜索引擎界面
下面是一個(gè)搜索引擎界面的例子,在這個(gè)Servlet中,用戶(hù)界面是動(dòng)態(tài)生成而不是由靜態(tài)HTML文件提供的。Servlet除了負責讀取表單數據并把它們發(fā)送給搜索引擎之外,還要把包含表單數據的Cookie發(fā)送給客戶(hù)端。以后客戶(hù)再次訪(fǎng)問(wèn)同一表單時(shí),這些 Cookie的值將用來(lái)預先填充表單,使表單自動(dòng)顯示最近使用過(guò)的數據。
SearchEnginesFrontEnd.java
該Servlet構造一個(gè)主要由表單構成的用戶(hù)界面。第一次顯示的時(shí)候,它和靜態(tài)HTML頁(yè)面提供的界面差不多。然而,用戶(hù)選擇的值將被保存到 Cookie(本頁(yè)面將數據發(fā)送到CustomizedSearchEngines Servlet,由后者設置Cookie)。用戶(hù)以后再訪(fǎng)問(wèn)同一頁(yè)面時(shí),即使瀏覽器是退出之后再啟動(dòng),表單中也會(huì )自動(dòng)填好上一次搜索所填寫(xiě)的內容。
注意該Servlet用到了ServletUtilities.java,其中g(shù)etCookieValue前面已經(jīng)介紹過(guò),headWithTitle 用于生成HTML頁(yè)面的一部分。另外,這里也用到了前面已經(jīng)說(shuō)明的LongLiveCookie類(lèi),我們用它來(lái)創(chuàng )建作廢期限很長(cháng)的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 =getCookieValue(cookies, "searchString", "Java Programming");
String numResults = getCookieValue(cookies, "numResults", "10");
String searchEngine =getCookieValue(cookies, "searchEngine", "google");
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String title = "Searching the Web";
out.println("<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("");
}
public 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);
}
}
CustomizedSearchEngines.java
前面的SearchEnginesFrontEnd Servlet把數據發(fā)送到CustomizedSearchEngines Servlet,下面例子除了要構造一個(gè)針對搜索引擎的URL并向用戶(hù)發(fā)送一個(gè)重定向應答之外,還要發(fā)送保存用戶(hù)數據的Cookies。
package hall;import java.io.*;import javax.servlet.*;import javax.servlet.http.*;import java.net.*;public class CustomizedSearchEngines extends HttpServlet { public void doPost(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); String url=request.getContextPath()+"/index.jsp"; url=response.encodeRedirectURL(url); //這里用這個(gè)url代替了google搜索 response.sendRedirect(url); }}
這個(gè)應用的運行圖:(用戶(hù)的輸入數據瀏覽器下次啟動(dòng)時(shí)將會(huì )保留)
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
C#使用cookie記住密碼
Cookie&Session
java對cookie的操作
cookie的增刪改查——java
七、HTTP應答狀態(tài)B
Java讀取Cookie
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久