쿠키는 클라이언트 컴퓨터에 저장되는 텍스트 파일이며, 많은 양의 트랙 정보를 저장합니다. 서블릿 기술을 기반으로 JSP는 분명히 HTTP 쿠키에 대한 지원을 제공할 수 있습니다.
반복 고객을 식별하는 데는 일반적으로 세 단계가 있습니다.
서버 스크립트는 일련의 쿠키를 브라우저에 보냅니다. 이름, 나이, 주민등록번호 등
브라우저는 필요할 경우를 대비해 이 정보를 컴퓨터에 로컬로 저장합니다.
다음에 브라우저가 서버에 요청을 보낼 때 이러한 쿠키 정보도 서버에 보내고 서버는 이 정보를 사용하여 사용자를 식별하거나 다른 작업을 수행합니다.
이 섹션에서는 쿠키를 설정 또는 재설정하는 방법, 쿠키에 액세스하는 방법 및 삭제하는 방법을 설명합니다.
쿠키는 일반적으로 HTTP 헤더에 설정됩니다(단, JavaScript는 브라우저에서 직접 쿠키를 설정할 수 있음). JSP에서 쿠키를 설정하려면 다음 정보 헤더를 서버로 보내야 합니다.
HTTP/1.1 200 OK날짜: 2000년 2월 4일 금요일 21:03:38 GMTServer: Apache/1.3.9 (UNIX) PHP/4.0b3Set-Cookie: name=xyz; 만료=2000년 2월 4일 금요일 22:03: 38 GMT; 경로=/; 도메인=tutorialspoint.com연결: closeContent-Type: 텍스트/html
보시다시피 Set-Cookie 헤더에는 키-값 쌍, GMT(그리니치 표준시) 시간, 경로 및 도메인 이름이 포함되어 있습니다. 키-값 쌍은 URL로 인코딩됩니다. 만료 날짜 필드는 이 쿠키를 지울 수 있는 시간을 브라우저에 알려주는 명령입니다.
귀하의 브라우저가 쿠키를 저장하도록 구성된 경우 해당 정보는 만료될 때까지 유지됩니다. 사용자가 방문한 페이지가 쿠키의 경로 및 도메인 이름과 일치하면 브라우저는 쿠키를 서버로 다시 보냅니다. 브라우저 측 헤더는 다음과 같습니다.
GET / HTTP/1.0연결: Keep-AliveUser-Agent: Mozilla/4.6 (X11; I; Linux 2.2.6-15apmac ppc)호스트: zink.demon.co.uk:1126Accept: image/gif, */*Accept- 인코딩: gzipAccept-Language: enAccept-Charset: iso-8859-1,*,utf-8쿠키: 이름=xyz
JSP 스크립트는 요청 객체의 getCookies() 메소드를 통해 이러한 쿠키에 액세스합니다. 이 메소드는 Cookie 객체의 배열을 반환합니다.
다음 표에는 Cookie 객체에서 일반적으로 사용되는 메서드가 나열되어 있습니다.
일련번호 | 방법 및 설명 |
---|---|
1 | public void setDomain(String Pattern)은 w3cschool.cn과 같은 쿠키의 도메인 이름을 설정합니다. |
2 | public String getDomain() 은 w3cschool.cn과 같은 쿠키의 도메인 이름을 가져옵니다. |
3 | public void setMaxAge(int expiry)는 쿠키 유효 기간을 초 단위로 설정합니다. 기본 유효 기간은 현재 세션의 생존 시간입니다. |
4 | public int getMaxAge()는 쿠키 유효 기간을 초 단위로 가져옵니다. 기본값은 -1이며, 이는 브라우저가 닫힐 때까지 쿠키가 유지됨을 나타냅니다. |
5 | public String getName()은 쿠키 이름을 반환합니다. 이름은 생성된 후에는 수정할 수 없습니다. |
6 | public void setValue(String newValue)는 쿠키 값을 설정합니다. |
7 | public String getValue()는 쿠키 값을 가져옵니다. |
8 | public void setPath(String uri)는 현재 페이지 디렉터리와 이 디렉터리의 모든 하위 디렉터리에 있는 모든 URL을 기본값으로 하는 쿠키 경로를 설정합니다. |
9 | public String getPath()는 쿠키의 경로를 가져옵니다. |
10 | public void setSecure(boolean flag)는 전송을 위해 쿠키를 암호화해야 하는지 여부를 나타냅니다. |
11 | public void setComment(String Purpose)는 쿠키의 목적을 설명하는 주석을 설정합니다. 주석은 브라우저가 사용자에게 쿠키를 표시할 때 유용할 수 있습니다. |
12 | public String getComment()는 쿠키의 목적을 설명하는 주석을 반환하거나, 쿠키가 없으면 null을 반환합니다. |
JSP를 사용하여 쿠키를 설정하려면 다음 세 단계가 필요합니다.
(1) 쿠키 객체 생성: 쿠키 이름과 값을 매개변수로 사용하여 쿠키 생성자를 호출합니다. 둘 다 문자열입니다.
쿠키 쿠키 = new Cookie("키","값");
이름이나 값에는 공백이나 다음 문자가 포함될 수 없다는 점을 기억하는 것이 중요합니다.
[ ] ( ) = , " / ? @ : ;
(2) 유효 기간 설정: setMaxAge() 함수를 호출하여 쿠키가 유효한 기간(초)을 나타냅니다. 다음 작업은 유효 기간을 24시간으로 설정합니다.
cookie.setMaxAge(60*60*24);
(3) HTTP 응답 헤더에 쿠키 보내기: response.addCookie() 함수를 호출하여 HTTP 응답 헤더에 쿠키를 추가합니다.
response.addCookie(쿠키);
<% // first_name 및 last_name에 대한 쿠키 설정 Cookie firstName = new Cookie("first_name", request.getParameter("first_name")) Cookie lastName = new Cookie("last_name",request.getParameter("last_name")); //쿠키 만료 시간을 24시간으로 설정합니다. firstName.setMaxAge(60*60*24); lastName.setMaxAge(60*60*24); // 응답 헤더에 쿠키 추가 response.addCookie( firstName ); %><html>< head><title>쿠키 설정</title></head><body><center><h1>설정 쿠키</h1></center><ul><li><p><b>이름:</b><%= request.getParameter("first_name")%></p></li>< li><p><b>성:</b> <%= request.getParameter("last_name")%></p></li></ul></body></html>
위 파일을 <Tomcat 설치 디렉터리>/webapps/ROOT 디렉터리에 넣고 http://localhost:8080/hello.jsp를 방문하면 다음과 같은 결과가 나타납니다.
이름과 성을 입력한 후 제출 버튼을 클릭하면 화면에 이름과 성이 표시되고 다음에 클릭할 때 서버로 전송되는 두 개의 쿠키(이름과 성)가 설정됩니다. 제출 버튼.
쿠키를 읽으려면 request.getCookies() 메서드를 호출하여 javax.servlet.http.Cookie 객체의 배열을 얻은 다음 배열을 반복하고 getName() 메서드와 getValue() 메서드를 사용하여 각 쿠키를 얻어야 합니다. . 이름과 값.
이전 예제의 쿠키를 읽어보겠습니다.
<html><head><title>쿠키 읽기</title></head><body><center><h1>쿠키 읽기</h1></center><% 쿠키 cookie = null Cookie[] Cookies = null; // 배열인 쿠키 데이터 가져오기 cookie = request.getCookies(); if( cookie != null ){ out.println("<h2> 발견된 쿠키 이름 및 값</h2>"); 정수 나는 = 0; i < 쿠키.길이; i++){ 쿠키 = 쿠키[i]; out.print("이름: " + cookie.getName( ) + ", "); ( )+" <br/>"); } }else{ out.println("<h2>쿠키를 찾을 수 없습니다</h2>") }%></body></html>
이름 쿠키를 "John"으로 설정하고 성을 "Player"로 설정하고 http://localhost:8080/main.jsp를 방문하면 다음과 같은 출력이 표시됩니다.
발견된 쿠키 이름 및 ValueName: first_name, 값: John Name: last_name, 값: Player
쿠키를 삭제하는 것은 매우 쉽습니다. 쿠키를 삭제하려면 아래 단계를 따르십시오.
기존 쿠키를 가져와서 Cookie 개체에 저장합니다.
쿠키 만료 날짜를 0으로 설정합니다.
이 쿠키를 응답 헤더에 다시 추가하세요.
다음 프로그램은 "first_name"이라는 쿠키를 삭제합니다. 다음에 main.jsp를 실행할 때 first_name은 null이 됩니다.
<html><head><title>쿠키 읽기</title></head><body><center> <h1>쿠키 읽기</h1></center><% 쿠키 cookie = null Cookie[] Cookies = null; // 배열인 현재 도메인 이름에서 쿠키를 가져옵니다. "); for (int i = 0; i < cookie.length; i++){ 쿠키 = 쿠키[i]; if((cookie.getName( )).compareTo("first_name") == 0 ){ response.addCookie (쿠키); out.print("삭제된 쿠키: " + cookie.getName( ) + "<br/>") } out.print("이름: " + cookie.getName( ) + ", "); out.print("값: " + cookie.getValue( )+" <br/>") } }else{ out.println( "<h2>쿠키를 찾을 수 없습니다.</h2>"); 본문></html>
액세스하면 다음과 같은 출력이 제공됩니다.
쿠키 이름 및 값삭제된 쿠키: first_nameName: first_name, 값: JohnName: last_name, 값: Player
http://localhost:8080/main.jsp를 다시 방문하면 다음과 같은 결과를 얻을 수 있습니다.
발견된 쿠키 이름 및 ValueName: last_name, 값: Player
브라우저에서 쿠키를 수동으로 삭제할 수도 있습니다. 도구 메뉴 항목을 클릭한 다음 인터넷 옵션을 선택하고 쿠키 삭제를 클릭하여 모든 쿠키를 삭제합니다.