この記事では詳細に説明しています。
1. Cookieの基本的な使用法を実証します
2。Cookieのアクセス許可を示します
3.クッキーの削除を実証します
4.クッキーを使用して、ユーザーがログインした最後の時間を表示します
5.クッキーテクノロジーを使用して、最近ユーザーが閲覧したいくつかの写真を表示します
6.テストCookieの数とFirefoxブラウザの最大Cookieの大きさはどれくらいですか?
1. Cookieの基本的な使用法を実証します
index.jsp:
<%@ page Language = "Java" Import = "Java.util。*" PageEncoding = "Utf-8"%> <!doctype html public " - // w3c // dtd html 4.01 transitional // en" Cookieの基本的な使用</a> <br/> </body> </html>
web.xml:
<?xml version = "1.0" encoding = "utf-8"?> <web-appバージョン= "3.0" xmlns = "http://java.sun.com/xml/ns/javaee" xmlns:xsi = "http://www.w3.org/2001/xmlschema-instcance" xsi:schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <display-name> </display> <servletmame <サーブレットクラス> cn.hncu.servlets.cookiedemo </servlet-class> </servlet> <servlet-name> cookiedemo </servet-name> <url-pattern>/cookiedemo </url-pattern> </servlet-mapping> </welcome-file-list> </web-app>
cookiedemo.java:
パッケージcn.hncu.servlets; Import java.io.ioexception; import java.io.printwriter; import java.net.urldecoder; Import java.net.urlencoder; Import java.util.util.random; Import Javax.Servletexception; javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; Import javax.servlet.servlet.httpservletResponse;パブリッククラスのcookiedemo extends httpservlet {public void doget servletexception、ioexception {respons.setContentType( "text/html; charset = utf-8"); printwriter out = response.getWriter(); // cookieをクライアントに書き込みますランダムr = new Random(); int n = r.nextint(100); string name = "jack"; // cookieの形式:key = value cookie c = new cookie( "name"、name+n); C.SetMaxage(60*60); //有効期限を秒単位で設定するc.setPath(request.getContextPath());パスまたはサブパスと同じパスを持つサーブレットのみがCookieにアクセスできます// Cookieのパスがプロジェクトルートディレクトリとして設定されている場合、プロジェクトのすべてのサーブレットはIT Response.AddCookie(c)にアクセスできます。 //このデモンストレーションクッキーには、中国語の弦str = "私は中国語を持ち込む"を持っています。 str = urlencoder.encode(str、 "utf-8"); //中国語でエンコードを設定します! ! ! Cookie CSTR = new Cookie( "str"、str)をエンコードするurlencode; // setMaxageが設定されていない場合、ブラウザは閉じられるとすぐにcstr.setpath( "/"); Response.AddCookie(CSTR); // cookie cs [] = request.getCookies(); // cookie if(cs!= null){//(cookie cc:cs){string name2 = cc.getname();文字列val = cc.getValue(); val = urldecoder.decode(val、 "utf-8"); //エンコードされたときにデコードすることがわかります!中国語のデコード、ASCIIはそのままです! out.print(name2+"="+val+"<br/>"); }} out.print( "クックが正常に保存されました!"); }}デモンストレーション結果:
最初のクリックで!次回はセッションについて説明します! Tomcatは自動的に生成され、クライアントに送信されます!
もう一度入るとき!
名前+n背後はランダムに生成されているため、このクリックは常に前の情報の情報を表示します!
2。Cookieのアクセス許可を示します
index.jsp:
<a href = "servlet/cookiedemo2"> cookieのアクセス権限を示します</a> <br/> web.xml:<servlet> <servlet-name> cookiedemo2 </servlet-name> <servlet-class> <Servlet-Name> cookiedemo2 </servlet-name> <url-pattern>/servlet/cookiedemo2 </url-pattern> </servlet-mapping>
cookiedemo2.java:
パッケージcn.hncu.servlets; Import java.io.ioexception; import java.io.printwriter; Import java.util.random; Import javax.servlet.servletexception; Import javax.servlet.http.cookie; Import javax.servlet.http.httpservlet; Import; javax.servlet.http.httpservletrequest;インポートjavax.servlet.http.httpservletresponse; public class cookiedemo2 extends httpservlet {public void doget(httpservletrequest request、httpservletresponsesceptionception Response.setContentType( "text/html; charset = utf-8"); printwriter out = response.getWriter(); // cookieをクライアントに書き込みますランダムr = new Random(); int n = r.nextint(100); Cookie C = new Cookie( "age"、 ""+n); C.SetMaxage(60*60); //有効期限C.SetPath(Request.getContextPath()+"/servlet/cookiedemo2"); // cookieemoのurl-patternはプロジェクトルートディレクトリ/cookiedemoであり、cookiemoにアクセスできないため、パスはクッキーであるためです。 ! !パスが異なる場合、Cookieは別のオブジェクトです。つまり、同じ名前のCookieが重複しないことを意味します。 Response.AddCookie(c); //クライアントCookieから送信されたCookieを読む[] = request.getCookies(); if(cs!= null){for(cookie cc:cs){string name = cc.getname();文字列val = cc.getValue(); out.print( "22222-"+name+"="+val+"<br/>"); }} out.print( "Cookieは正常に保存されます!"); }}デモンストレーション結果:
最初にcookiedemo2ページを入力して、cookiedemo name-cookieにアクセスします
cookiedemoページをもう一度入力すると、cookiedemo2 age-cookieにアクセスできません
3.クッキーの削除を実証します
index.jsp:
<a href = "servlet/delcookiedemo"> cookieの削除を示します</a> <br/>
web.xml:
<Servlet> <Servlet-Name> delcookiedemo </servlet-name> <servlet-class> cn.hhncu.servlets.delcookiedemo </servlet-class> </servlet mapping> <servlet-name> delcookiedemo </servlet-name> <url-perthern>
delcookiedemo.java:
パッケージcn.hncu.servlets; Import java.io.ioexception; import java.io.printwriter; import javax.servlet.servletexception; import javax.servlet.http.cookie; Import javax.servlet.http.httpservlet; javax.servletlelet.servletlelet.servletlelet.http.httptp. javax.servlet.http.httpservletrequest;インポートjavax.servlet.http.httpservletResponse;パブリッククラスDelcookiedemoはhttpservletを拡張します{public void doget(httpservletrequest request、httpservletesceptionception Response.setContentType( "text/html; charset = utf-8"); printwriter out = response.getWriter(); Cookie cs [] = request.getCookies(); if(cs!= null){for(cookie c:cs){// "name" cookieに移動するには、現在のサーブレットは許可を読み取る必要があります。つまり、サーブレットのURLパターンは、クッキーによって設定されたパスまたはそれを設定したパスのサブパス// delete the name cookie if(c.getname(c.getname()) request.getContextPath()); //削除すると、この文を通して許可が判断されます!これは、削除するように設定された元のパスとまったく同じでなければなりません。そうしないと、削除することはできません! //前の文の場合、私の個人的な理解は次のとおりです。パス設定が異なる場合、実際には新しいCookieが開かれているようです。新しいCookieの有効期限は0で、名前は「name」c.setmaxage(0); //有効期限が0に設定されている場合、削除を意味します。 }}}}}}デモンストレーション結果:
現時点では、名前はまだ存在します。
Delcookiedemoを訪れます。
最初のリンクに移動して読む:
名前はなくなりました!
Firefoxは、期限切れのCookieを自動的に削除します。
4.クッキーを使用して、ユーザーがログインした最後の時間を表示します
index.jsp:
<a href = "loginservlet">クッキーを使用して、ユーザーがログインした最後の時間を表示します</a>
web.xml:
<Servlet> <Servlet-Name> loginServlet </servlet-name> <servlet-class> cn.hhncu.servlets.loginservlet </servlet-class> </servlet-mapping> <servlet-name> loginservlet </servlet-name> <url-pattern>
loginservlet.java:
パッケージcn.hncu.servlets; Import java.io.ioexception; Import java.io.printwriter; import java.text.simpledateformat; Import java.util.date; import javax.servletexception; servletexception; import javax.servlet.http.cokie; import javax.servlet.servlettptptptptptptptptptptp.servlet.httptp.servlet.http.servlet.http.cokie; javax.servlet.http.httpservletrequest;インポートjavax.servlet.http.httpservletresponse; public class loginservlet extends httpservlet {public void doget(httpservletrequest request、httpservletresponsesception Response.setContentType( "text/html; charset = utf-8"); printwriter out = response.getWriter(); out.println( "<!doctype html public/" - // w3c // dtd html 4.01 transitional // en/">"); out.println( "<html>"); out.println( "<head> <title> cookieを使用してユーザーの最後のログイン時間を表示する</title> </head>"); out.println( "<body>"); //クライアントのCookie Cookie cs [] = request.getCookies()を読む; boolean boo = false; if(cs!= null){for(cookie c:cs){// travel if( "logintime" .equals(c.getname())){string val = c.getvalue(); long dt = long.parselong(val);日付d = new Date(dt); SimpleDateFormat SDF = new SimpledateFormat( "yyyyy year mm month dd date hh:mm:ss"); out.print( "最後のログイン時間は次のとおりでした:"+sdf.format(d)); boo = true;壊す; }}} if(boo == false){// 1年前にアクセスレコードがないことを意味します!以下で保存する有効期限はout.print( "昨年初めて訪問している..."); } //新規ユーザーであろうと古いユーザーであろうと、クッキーは最後の2回で作成され、クライアントに書き込まれます。私が元々持っていたのは、更新時間d = new Date()です。 Cookie C = new Cookie( "logintime"、 ""+d.gettime()); c.setPath(request.getContextPath()); C.SetMaxage(60*60*24*30*12); Response.AddCookie(c); out.println( "</body>"); out.println( "</html>"); out.flush(); out.close(); }}デモンストレーション結果:
最初の訪問。
もう一度訪問:
5.クッキーテクノロジーを使用して、最近ユーザーが閲覧したいくつかの写真を表示します
index.jsp:
<a href = "jsps/show.jsp">最近ユーザーが閲覧したいくつかの写真を表示するために、ビューティーを使用するクッキーテクノロジーを見てください</a>
web.xml:
<サーブレット> servlet-name> showervlet </servlet-name> <servlet-class> cn.hhncu.servlets.showsert </servlet-class> </servlet> <servlet-name> showervlet </servlet-name> <url-pattern>/showimg
show.jsp:
<%@ページインポート= "java.io.file"%> <%@ page言語= "java" import = "java.util。*" pageencoding = "utf-8"%> <!<!<!<!w3c // dtd html 4.01 transitional // en "国境:0pxソリッド#000;幅:100px;高さ:100px;オーバーフロー:隠し; } .span img {max-width:100px; _Width:式(this.width> 100? "100px":this.width); } .spans {border:0px solid#000;幅:50px;高さ:50px;オーバーフロー:隠し; } .spans img {max-width:50px; _width:式(this.width> 50? "50px":this.width); } </style> </head> <body> <body> <h1>最近ユーザーが閲覧したいくつかの写真を表示するために、Beauties-Use Cookieテクノロジーを見てください</h1> <a href = "/mycookieweb/jsps/show.jsp">ビューティー使用クッキーテクノロジーを見て、最近閲覧されたいくつかの写真を表示ビュー - > <%string str = null; Cookie cs [] = request.getCookies(); if(cs!= null){for(cookie c:cs){if( "images" .equals(c.getname())){str = c.getValue(); // ***。jpg break; }}} if(str!= null){string strs [] = str.split( "、"); for(string s:strs){%> <span> <img src = "<%= request.getContextPath()%>/imgs/<%= s%>"/> </span> <%}}%> <br/> string path = getServletContext()。getRealPath( "/imgs"); //system.out.printf(path); //d:/apache-tomcat-7.0.30/webapps/mycookieweb/jsps file = new java.io.file(path); file [] files = file.listfiles(); if(files!= null){%> <%for(file f:files){string imgname = f.getName(); %> <span> <a href = "<%= request.getcontextpath()%>/showimg?img = <%= imgname%>"> <img src = "<%= request.get.contextpath()%>/<%= imgname%>"/>> </a>showervlet.java:
パッケージcn.hncu.servlets; Import java.io.ioexception; import java.io.printwriter; import javax.servlet.servletexception; import javax.servlet.http.cookie; Import javax.servlet.http.httpservlet; javax.servletlelet.servletlelet.servletlelet.http.httptp. javax.servlet.http.httpservletResponse; public class showervlet extends httpservlet {public void doget(httpservletrequest request、httpservletresponse応答)Servletexception、ioexception、ioexception {response.setcontenttype( "text/html"); printwriter out = response.getWriter(); out.println( "<!doctype html public/" - // w3c // dtd html 4.01 transitional // en/">"); out.println( "<html>"); out.println( "<head> <title> aサーブレット</title> </head>"); out.println( "<body>");文字列img = request.getParameter( "img"); string imgstr = "<img src = '"+request.getContextPath()+"/imgs/"+img+"' //>"+img+"'//ユーザーCookie cs [] = request.getcookies(); boolean boo = false; if(cs!= null){for() if(c.getname()){//既にcookie string imgstrs(); if(imgstrs [i] .equals(img)){if(i == 1 && imgstrs.length == 2){imgs = imgstrs [i]+"、"+imgstrs [0]; imgs = imgstrs [0]+"、"+imgstrs [1]; imgs = img+"、"+imgs; //次の方法を使用するのは少し厄介です:imgs+"、"+img if(imgs.split( "、")。長さ3){//画像が3回以上訪問した場合、imgs = imgs.substring(0、imgs.lastindexof ");これは、上記の追加画像を追加する順序を逆転させることが最善です。 if(imgs.split( "、")。長さ> 3){//画像が3回以上訪問した場合、imgs = imgs.substring(imgs.indexof( "、")+1、imgs.length()); }*/} C.SetValue(IMGS); // update c.setMaxage(60*60*24*30); c.setPath( "/"); //完全にリラックスしたアクセス権、つまり、すべてのプロジェクトがrespons.addcookie(c)にアクセスできます。 boo = true;壊す; }}} if(boo == false){//最初の訪問を示します。つまり、ブラウザCookie c = new Cookie( "Images"、img)に画像ブラウジングはありません。 C.SetMaxage(60*60*24*30); C.SetPath( "/"); Response.AddCookie(c); } out.println( "</body>"); out.println( "</html>"); out.flush(); out.close(); }}デモンストレーション結果:
6.テストCookieの数とFirefoxブラウザの最大Cookieの大きさはどれくらいですか?
index.jsp:
<a href = "servlet/howmanycookieservlet"> FirefoxブラウザーがサポートするCookieと1つのCookieの最大数をテスト</a> <br/>
web.xml:
<Servlet> <Servlet-Name> Howmanycookie </servlet-name> <servlet-class> cn.hncu.servlets.howmanycookie </servlet-class> </servlet> <servlet-mapping> <servlet-name> howmanycookie </servlet-name> <url-perthn>
howmanycookie.java:
パッケージcn.hncu.servlets; Import java.io.ioexception; import java.io.printwriter; import java.net.urldecoder; Import javax.servlet.servletexception; Import javax.servlet.http.cookie; Import Javax.htp.httpservlet; Import; javax.servlet.http.httpservletrequest;インポートjavax.servlet.http.httpservletresponse;パブリッククラスhowmanycookieはhttpservletを拡張します{public void doget(httpservletrequest request、httpservletesceptioncections Response.getWriter(); /* //テストのnum - firefox 47.0.1は(int i = 1; i <= 110; i ++){cookie c = new cookie( "textnum"+i、 ""+i)for(int i = 1; i <= 110; i ++)for(int i <= 110; i ++)をサポートしています。 C.SetMaxage(60*15); C.SetPath( "/"); Response.AddCookie(c); } *///テストサイズ--- 4092バイトは、最大のサポートされているシングルクッキーストレージ文字列s = ""; for(int i = 0; i <4092; i ++){s+= "1"; } cookie c = new cookie( "test"、s); C.SetMaxage(60*15); C.SetPath( "/"); Response.AddCookie(c); cookie cs [] = request.getCookies(); // cookie if(cs!= null){//(cookie cc:cs){string key = cc.getname();文字列val = cc.getValue(); out.print(key+"="+val+""); }}}}上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。