이 기사는 자세히 설명합니다.
1. 쿠키의 기본 사용을 보여줍니다
2. 쿠키의 접근 권한을 보여줍니다
3. 쿠키 삭제를 보여줍니다
4. 쿠키를 사용하여 사용자가 마지막으로 로그인 한 시간을 표시합니다.
5. 쿠키 기술을 사용하여 최근 사용자가 탐색 한 여러 사진을 표시합니다.
6. Firefox 브라우저의 최대 쿠키는 몇 개의 쿠키와 얼마나 큰가요?
1. 쿠키의 기본 사용을 보여줍니다
index.jsp :
<%@ page language = "java"import = "java.util.*"pageencoding = "utf-8"%> <! doctype html public "-// w3c // dtd html 4.01 Transitional // en"> <html> <head> </head> <body <h1> 쿠키 기술 </h1> href = "Cookiedemo"> 쿠키의 기본 사용량을 보여줍니다 </a> <br/> </body> </html>
web.xml :
<? xml version = "1.0"encoding = "utf-8"?> <web-app version = "3.0"xmlns = "http://java.sun.com/xml/xml/ns/javaee"xmlns : xsi = "http://www.w3.org/2001/xmlschema-instance. xsi : schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <display-name> </display-name> <servlet> <servletmo </servlet-name> <Servlet-class> cn.hncu.servlets.cookiedemo </servlet-class> </servlet> <servlet-mapping> <servlet-name> cookiedemo </servlet-name> <Url-pattern>/cookiedemo </url-pattern> </servlet-mapping> <welcome-file-list> index> jpsp </welcome-file> </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.random; import javax.servlet.servletexception; import javax.servlet.htp.cook; javax.servlet.http.httpservlet; import javax.servlet.http.htttp.httpervletrequest; import javax.servlet.http.http.http.http.httpervletresponse; 공개 클래스 Cookiedemo는 httpservlet {public void doeprows (httpervletrequestrows), httpresprongegget response, ServleTeXception, ioException {response.setContentType ( "text/html; charset = utf-8"); printwriter out = response.getwriter (); // 클라이언트에 쿠키를 작성합니다 random r = new random (); int n = R.NextInt (100); 문자열 이름 = "jack"; // 쿠키 형식 : key = value 쿠키 c = 새 쿠키 ( "이름", name+n); c.setMaxage (60*60); // 만료 시간을 초로 설정합니다. 경로 또는 서브 경로와 동일한 경로를 가진 서블릿 만 쿠키에 액세스 할 수 있습니다. // 쿠키의 경로가 프로젝트 루트 디렉토리로 설정된 경우 프로젝트의 모든 서블릿이 응답에 액세스 할 수 있습니다. //이 데모 쿠키는 중국 문자열 str = "나는 중국어를 가져옵니다"; str = urlencoder.encode (str, "utf-8"); // 중국어로 인코딩을 설정하십시오! ! ! urlencode 인코딩 쿠키 cstr = 새로운 쿠키 ( "str", str); // setMaxage가 설정되지 않으면 브라우저가 닫히 자마자 만료됩니다. cstr.setpath ( "/"); 응답 .addcookie (CSTR); // 쿠키 읽기 cs [] = request.getCookies (); // 쿠키를 읽습니다. if (cs! = null) {// for (cookie cc : cs) {String name2 = cc.getName (); String val = cc.getValue (); val = urldecoder.decode (val, "utf-8"); // 인코딩 될 때 해독하는 것이 밝혀졌습니다! 중국 디코딩, ASCII는 그대로입니다! out.print (name2+"="+val+"<br/>"); }} out.print ( "Cook은 성공적으로 저장!"); }}데모 결과 :
첫 클릭에서! 다음에 세션이 논의 될 것입니다! Tomcat은 자동으로 생성되어 클라이언트에게 전송됩니다!
다시 들어올 때!
이름+n 뒤의 N이 무작위로 생성되기 때문에이 클릭은 항상 이전 정보의 정보를 표시합니다!
2. 쿠키의 접근 권한을 보여줍니다
index.jsp :
<a href = "servlet/cookiedemo2"> 쿠키의 액세스 권한을 보여줍니다 </a> <br/> web.xml : <servlet> <servlet-name> cookiedemo2 </servlet-name> <servlet-class> cn.hncu.servlets.cookiedemo2 </servlet> <servlet-mapping> <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.htpservlet; javax.servlet.http.httpertrequest; import javax.servlet.http.htttp.httpservletresponse; public class cookiedemo2는 httpservlet {public void doget (httpservletrequest 요청, httpservletresponse 응답) servletexcection, ioexcemption {ioexcemption {httpservletrequest request)를 확장합니다. Response.setContentType ( "Text/Html; charset = utf-8"); printwriter out = response.getwriter (); // 클라이언트에 쿠키를 작성합니다 random r = new random (); int n = R.NextInt (100); 쿠키 C = 새로운 쿠키 ( "Age", ""+N); c.setMaxage (60*60); // 만료 시간 c.setpath (request.getContextPath ()/servlet/cookiedemo2 "); // 쿠키 메커니즘에서 권한은 경로를 통해 제어됩니다. // Cookiedemo의 URL 패턴은 프로젝트 루 디렉토리/Cookiedemo가 설정 한 쿠키의 하위 디렉토리가 아니기 때문에! ! ! 경로가 다르면 쿠키는 다른 물체입니다. 즉, 동일한 이름의 쿠키가 겹치지 않습니다! 응답 .addcookie (c); // 클라이언트 쿠키에서 보낸 쿠키를 읽습니다 cs [] = request.getCookies (); if (cs! = null) {for (쿠키 cc : cs) {문자열 이름 = cc.getName (); String val = cc.getValue (); out.print ( "22222-"+name+"="+val+"<br/"); }} out.print ( "쿠키가 성공적으로 저장되었습니다!"); }}데모 결과 :
먼저 Cookiedemo2 페이지를 입력하여 Cookiedemo Name-Cookie에 액세스하십시오.
Cookiedemo 페이지를 다시 입력하고 Cookiedemo2 Age-Cookie에 액세스 할 수 없습니다.
3. 쿠키 삭제를 보여줍니다
index.jsp :
<a href = "servlet/delcookiedemo"> 쿠키 삭제를 보여줍니다 </a> <br/>
web.xml :
<Servlet> <servlet-name> delcookiedemo </servlet-name> <servlet-class> cn.hncu.servlets.delcookiedemo </servlet-class> </servlet> <servlet-mapping> <servlet-name> delcookiedemo </servlet-name> <Url-pattern>/servlet/delcokiedeMo </urlpattern>
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; import javax.servlet.servlet javax.servlet.http.htttp.httpservletrequest; import javax.servlet.http.htttp.httpservletresponse; public class delcookiedemo 확장 httpservlet {public void doget (httpservletrequest 요청, httpservletresponse 응답) servleteccement {ioexcement} Response.setContentType ( "Text/Html; charset = utf-8"); printwriter out = response.getwriter (); 쿠키 CS [] = request.getCookies (); if (cs! = null) {for (cookie c : cs) {// "이름"쿠키로 이동하기 위해, 현재 서브 렛은 읽기 권한이 있어야합니다. ); // 삭제할 때이 문장을 통해 권한이 판단됩니다! 삭제하도록 설정된 원래 경로와 정확히 동일해야합니다. 그렇지 않으면 삭제할 수 없습니다! // 이전 문장의 경우, 내 개인적인 이해는 다음과 같습니다. 경로 설정이 다르면 실제로 새 쿠키가 열리는 것과 같습니다. 새 쿠키의 만료 시간은 0이고 이름은 "이름"C.setmaxage (0)입니다. // 만료는 0으로 설정되면 삭제를 의미합니다 --- 삭제 로고는 여기에 응답하도록 설정됩니다 .addcookie (c); }}}}}}데모 결과 :
현재 이름은 여전히 존재합니다.
우리는 Delcookiedemo를 방문합니다.
읽기 위해 첫 번째 링크로 이동하십시오.
이름이 사라졌습니다!
Firefox는 자동으로 만료 된 쿠키를 삭제합니다.
4. 쿠키를 사용하여 사용자가 마지막으로 로그인 한 시간을 표시합니다.
index.jsp :
<a href = "loginservlet"> 쿠키를 사용하여 사용자가 마지막으로 로그인 한 시간을 표시합니다 </a>
web.xml :
<Servlet> <servlet-name> loginservlet </servlet-name> <servlet-class> cn.hncu.servlets.loginservlet </servlet-class> </servlet> <servlet-name> loginservlet </servlet-name> <uRl-pattern>/loginservletn </servlet-matporn>
loginservlet.java :
패키지 cn.hncu.servlets; import java.io.ioexception; import java.io.printwriter; import java.text.simpledateformat; import java.util.date; import javax.servlet.servletexception; import javax.servlet.http.cookie; import javax.servlet.http.httpservlet; import javax.servlet.http.htttp.httpervletrequest; import javax.servlet.http.http.http.htttp.htttp.httpervletresponse; public class loginservlet는 httpservlet {public void doprows (httpervletrequest) httprestrgrestrget get get get response, httpservletreper respons ServleTeXception, ioException {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> 쿠키를 사용하여 사용자의 마지막 로그인 시간을 표시하기 위해 </title> </head>"); out.println ( "<body>"); // 클라이언트의 쿠키 쿠키를 읽습니다 cs [] = request.getCookies (); 부울 부 = 거짓; if (cs! = null) {for (쿠키 c : cs) {// travel if ( "logintime".equals (c.getName ())) {String val = C.getValue (); long dt = long.parselong (val); 날짜 d = 새 날짜 (dt); simpledateformat sdf = 새로운 simpledateformat ( "yyyyy 년 mm 달 dd 날짜 hh : mm : ss"); out.print ( "마지막 로그인 시간은 다음과 같습니다."+sdf.format (d)); boo = true; 부서지다; }}} if (boo == false) {// 1 년 전에 액세스 레코드가 없다는 것을 의미합니다! 우리가 아래에서 저장하는 만료 시간은 꺼져 있기 때문에 print ( "당신은 작년에 처음으로 방문하고 있습니다 ..."); } // 새 또는 오래된 사용자이든 쿠키는 마지막 두 번 생성되어 클라이언트에게 기록됩니다. 내가 원래 가지고 있었던 것은 업데이트 시간 d = new date ()입니다. 쿠키 C = 새로운 쿠키 ( "logintime", ""+d.gettime ()); c.setPath (request.getContextPath ()); c.setmaxage (60*60*24*30*12); 응답 .addcookie (c); out.println ( "</body>"); out.println ( "</html>"); out.flush (); out.close (); }}데모 결과 :
첫 방문;
다시 방문하십시오 :
5. 쿠키 기술을 사용하여 최근 사용자가 탐색 한 여러 사진을 표시합니다.
index.jsp :
<a href = "jsps/show.jsp"> 미녀를 사용하는 쿠키 기술을보고 최근 사용자가 탐색 한 여러 사진을 표시합니다 </a>
web.xml :
<Servlet> <Servlet-name> showservlet </servlet-name> <servlet-class> cn.hncu.servlets.showservlet </servlet-class> </servlet-mapping> <servlet-name> showservlet </servlet-name> <url-pattern>/showimg </url-fattern> </servlet-mapping>
show.jsp :
<%@ page import = "java.io.file"%"%> <%@ page language ="java "import ="java.util.*"pageencoding ="utf-8 "%> <! doctype html public"-// w3c // dtd html 4.01 Transitional // en "> <head> <style> <style/cs el <. 테두리 : 0px 솔리드 #000; 너비 : 100px; 높이 : 100px; 오버플로 : 숨겨진; } .span img {max width : 100px; _width : expression (this.width> 100? "100px": this.width); } .spans {border : 0px solid #000; 너비 : 50px; 높이 : 50px; 오버플로 : 숨겨진; } .spans img {max width : 50px; _width : expression (this.width> 50? "50px": this.width); } </style> </head> <body> <h1> 미녀 사용 쿠키 기술을보고 최근 사용자가 탐색 한 몇 장의 사진을 표시하기 위해 </h1> <a href = "/mycookieweb/jsps/show.jsp"> 최근에 사용자가 탐색 한 여러 사진을 보여주기 위해 미용을 사용하는 쿠키 기술보기 </a> <! 보기-> <% 문자열 str = null; 쿠키 CS [] = request.getCookies (); if (cs! = null) {for (쿠키 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/> <br/> <bet // 파일을 사용하여 모든 그림을 표시하고 표시합니다. 문자열 path = getServletContext (). getRealPath ( "/imgs"); //system.out.printf(path); //d:/apache-tomcat-7.0.30/webapps/mycookieweb/jsps 파일 = 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.getContextPath ()%>/imgs/<%= Imgname%>"/> </a> </span> <%}%> <%> </html>showservlet.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; import javax.servlet.servlet javax.servlet.http.htttp.httpservletresponse; public class showservlet는 httpservlet {public void doget (httpservletrequest request, httpservletreponse responsk)를 확장합니다. servletexception, 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 servlet </title> </head>"); out.println ( "<body>"); 문자열 img = request.getParameter ( "IMG"); String imgstr = "<img src = '"+request.getContextPath ()+"/imgs/"+img+"//>"+img+"// 사용자 쿠키 CS가 방문한 이미지 정보를 기록하기 위해 쿠키를 사용하여 [) = request.getCookies (); boolean boo = false; if (cs! = null) {쿠키 c : c : c : c : cs) { if ( "이미지". if (imgstrs [i] .equals (img)) {if (i == 1 && imgstrs.length == 2) {imgs = imgstrs [i]+","+imgstrs [0]; IMGS =+IMGSTRS [1]; imgs = img+","+imgs; // IMGS+","+img if (imgs.split ( ","). 길이> 3) {// 이미지가 3 배 이상 방문한 경우 imgs.substring (0, imgs.lastIndexof ( ") 이것은 위의 중복 이미지 방지 순서를 뒤집는 것이 가장 좋습니다 ./imgs+","+img 메서드 : imgs = imgs+","+img; if (imgs.split ( ","). length> 3) {// 이미지가 3 배 이상 방문한 경우 imgs = imgs.substring (imgs.indexof ( ",")+1, imgs.length ()); }*/} c.setValue (imgs); // 업데이트 c.setmaxage (60*60*24*30); c.setpath ( "/"); // 완전히 완화 된 액세스 권한과 동일합니다. 즉, 모든 프로젝트는 응답에 액세스 할 수 있습니다 .addcookie (c); boo = true; 부서지다; }}} if (boo == false) {// 첫 번째 방문을 나타냅니다. 즉, 브라우저 쿠키 C = 새로운 쿠키 ( "이미지", img)에 이미지 브라우징이 없습니다. C.SetMaxage (60*60*24*30); c.setpath ( "/"); 응답 .addcookie (c); } out.println ( "</body>"); out.println ( "</html>"); out.flush (); out.close (); }}데모 결과 :
6. Firefox 브라우저의 최대 쿠키는 몇 개의 쿠키와 얼마나 큰가요?
index.jsp :
<a href = "servlet/howmanycookieservlet"> Firefox 브라우저가 지원하는 최대 쿠키 수와 하나의 쿠키를 테스트 </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-pattern>/servletn> </urpattern>
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.servlet.httplet.httpplet.httpervlet; javax.servlet.http.httpervletrequest; import javax.servlet.http.htttp.httpervletresponse; public class howmanycookie 확장 httpservlet {public void doget (httpservletrequest request, httpservletresponse 응답). Response.getWriter (); /* // 테스트의 num-firefox 47.0.1은 (int i = 1; i <= 110; i ++) {쿠키 c = 새 쿠키 ( "textnum"+i, ""+i); c.setmaxage (60*15); c.setpath ( "/"); 응답 .addcookie (c); } */// 테스트 크기 --- 4092 바이트는 가장 큰 지원되는 단일 쿠키 저장 문자열 s = ""; for (int i = 0; i <4092; i ++) {s+= "1"; } 쿠키 C = 새로운 쿠키 ( "테스트", s); c.setmaxage (60*15); c.setpath ( "/"); 응답 .addcookie (c); 쿠키 cs [] = request.getCookies (); // 쿠키를 읽습니다. if (cs! = null) {// (쿠키 cc : cs) {string key = cc.getName (); String val = cc.getValue (); out.print (key+"="+val+""); }}}}위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.