JSP 쿠키 처리
쿠키는 클라이언트에 저장된 텍스트 파일입니다, 그들은 트랙 많은 정보를 저장할 수 있습니다. 서블릿 기술 기준에는, JSP 명백하게 HTTP 쿠키에 대한 지원을 제공 할 수있다.
일반적으로 반복 방문자를 식별하기 위해 세 단계가 있습니다 :
- 서버 스크립트는 브라우저 쿠키의 시리즈를 보냅니다. 등의 이름, 나이, ID 번호,
- 브라우저는 비상 사태에 대비, 로컬 컴퓨터에서이 정보를 저장합니다.
- 브라우저는 서버에 대한 요청을 전송 다음번은 서버 쿠키 정보가 전송되며, 서버는이 정보를 사용자에게 식별하거나 다른 일을 사용.
이 장에서는 설정하거나 쿠키의 방법을 다시 설정하는 방법에 액세스하는 방법과이를 제거하는 방법을 가르 칠 것입니다.
다음과 같이 JSP 쿠키, 중국어 인코딩 및 디코딩의 요구를 처리 :
String str = java.net.URLEncoder.encode("中文"); //编码 String str = java.net.URLDecoder.decode("编码后的字符串"); // 解码
쿠키 분석
HTTP 헤더 정보 (자바 스크립트가 브라우저 쿠키에 직접 설정 될 수있다)는 일반적으로 쿠키 설정된다. JSP, 서버에 대한 다음의 정보를 전송하기 위해 쿠키 헤더를 설정
HTTP/1.1 200 OK Date: Fri, 04 Feb 2015 21:03:38 GMT Server: Apache/1.3.9 (UNIX) PHP/4.0b3 Set-Cookie: name=w3big; expires=Friday, 04-Feb-07 22:03:38 GMT; path=/; domain=w3big.com Connection: close Content-Type: text/html
당신이 볼 수 있듯이, 설정-Cookie 헤더는 키 - 값 쌍하는 GMT (그리니치) 시간, 경로, 도메인 이름이 포함되어 있습니다. 키 - 값 쌍은 URL로 인코딩됩니다. 필드의 유효성이 쿠키를 제거 할 수있는 시간 후 브라우저를 알려주는 명령입니다.
브라우저는 쿠키를 저장하도록 구성되는 경우에 만료 될 때까지, 다음의 정보를 저장한다. 사용자가 방문하는 모든 페이지는 쿠키 경로 및 도메인 이름과 일치하는 경우, 브라우저는 서버에 다시 쿠키를 다시 보내드립니다. 브라우저 측 헤더는 다음과 같습니다 :
GET / HTTP/1.0 Connection: Keep-Alive User-Agent: Mozilla/4.6 (X11; I; Linux 2.2.6-15apmac ppc) Host: zink.demon.co.uk:1126 Accept: image/gif, */* Accept-Encoding: gzip Accept-Language: en Accept-Charset: iso-8859-1,*,utf-8 Cookie: name=xyz
JSP 스크립트 요청 객체 대해 getCookies 쿠키 객체의 배열을 반환 () 메소드에 의해 쿠키에 액세스 할 수 있습니다.
서블릿 쿠키 방법
다음 표는 일반적으로 사용되는 방법 쿠키 개체를 나열 :
아니오. | 방법 및 설명 |
---|---|
(1) | 공공 무효 setDomain (문자열 패턴) 쿠키 도메인을 설정, 같은 w3cschool.cc |
이 | 공공 문자열 getDomain () 쿠키 도메인을 가져 오기 등 w3cschool.cc |
3 | 공공 무효 setMaxAge (INT 만료) 쿠키 만료 설정 (초), 기본값은 생존 기간의 현재 세션에 대한 유효 |
4 | 공공 INT의 getMaxAge () 쿠키 만료를 취득, 초, 기본 브라우저에 부응 할 쿠키가 닫혀 있음을 나타내는 -1 |
(5) | 공공 문자열 getName () 쿠키의 이름을 돌려, 이름은 만든 후 변경할 수 없습니다 |
6 | 공공 무효의 setValue (문자열 newValue에) 쿠키의 값을 설정 |
(7) | 공공 문자열 getValue () 쿠키의 값을 가져옵니다 |
8 | 공공 무효의 setPath (문자열 URI) 쿠키 경로 설정, 기본은 모든 페이지 디렉토리의 현재 URL, 그리고 아래의 모든 하위 디렉토리입니다 |
9 | 공공 문자열있는, getPath () 쿠키 경로를 가져옵니다 |
(10) | 공공 무효 위해 setsecure (부울 플래그) 표시하기 위해 쿠키 암호화 전송 여부 |
(11) | 공공 무효는 setComment (문자열 목적) 코멘트 설정 쿠키의 용도를 설명한다. 브라우저 쿠키를 사용자에게 제공하는 경우, 의견은 매우 유용 할 것입니다 |
(12) | 공공 문자열 getComment () 더가있는 경우 쿠키의 목적을 설명하는 주석을 돌려줍니다 없다 |
JSP를 사용하여 쿠키 설정
사용 JSP 쿠키는 세 단계로 구성 설정 :
(1) 쿠키 객체를 만듭니다 쿠키 이름과 값을 매개 변수로, 그들은 문자열은을 사용하여 생성자 쿠키를 호출.
Cookie cookie = new Cookie("key","value");
이름과 값이 공백이나 다음 문자를 포함 할 수 있음을 명심해야합니다 :
[ ] ( ) = , " / ? @ : ;
(2) 설정이 유효합니다 setMaxAge ()를 호출 기능 (초) 쿠키 내에서 유효 기간을 나타냅니다. 다음은 24 시간 동안 유효 설정합니다.
cookie.setMaxAge(60*60*24);
(3) HTTP 응답 헤더에 쿠키를 보냅니다 쿠키를 추가 HTTP 헤더에 응답 response.addCookie () 함수를 호출합니다.
response.addCookie(cookie);
예를 들면 데모
다음과 같이 main.jsp 파일의 코드는 다음과 같습니다
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.net.*" %> <% // 编码,解决中文乱码 String str = URLEncoder.encode(request.getParameter("name"),"utf-8"); // 设置 name 和 url cookie Cookie name = new Cookie("name", str); Cookie url = new Cookie("url", request.getParameter("url")); // 设置cookie过期时间为24小时。 name.setMaxAge(60*60*24); url.setMaxAge(60*60*24); // 在响应头部添加cookie response.addCookie( name ); response.addCookie( url ); %> <html> <head> <title>设置 Cookie</title> </head> <body> <h1>设置 Cookie</h1> <ul> <li><p><b>网站名:</b> <%= request.getParameter("name")%> </p></li> <li><p><b>网址:</b> <%= request.getParameter("url")%> </p></li> </ul> </body> </html>
다음은 GET 방식을 통해 간단한 HTML 양식이 클라이언트 main.jsp 파일에 데이터를 입력하고 쿠키를 설정하는 것입니다 :
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>本教程(w3big.com)</title> </head> <body> <form action="main.jsp" method=GET> 站点名: <input type="text" name="name"> <br /> 网址: <input type="text" name="url" /> <input type="submit" value="提交" /> </form> </body> </html>
이 test.htm 파일에 위의 HTML 코드를 저장합니다.
(main.jsp 같은 디렉토리 포함)의 WebContent JSP 프로젝트에서 현재 디렉토리에 파일을 배치합니다.
방문 HTTP 작성자 : // localhost를 : 8080 / testjsp / test.html를 main.jsp 파일로 양식 데이터를 제출, GIF 데모는 다음과 같습니다 :
입력 "사이트 이름"과 "URL"을 시도, 다음은 "사이트 이름"과 화면에서 "URL"을 표시하고 "사이트 이름"과 "URL"이 쿠키를 설정하며, 제출 버튼을 클릭합니다.
쿠키를 읽을 JSP를 사용하여
쿠키를 읽으려면, 각 쿠키를 얻을 수있는 방법 getName ()와 getValue () 메소드를 사용하여 배열을 통과 한 후 javax.servlet.http.Cookie 객체의 배열을 얻을 수 request.getCookes ()를 () 메소드를 호출해야합니다 이름과 값입니다.
다음은 cookie.jsp 파일 코드의 쿠키의 마지막 예를 읽어 보자 :
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.net.*" %> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>获取 Cookie</title> </head> <body> <% Cookie cookie = null; Cookie[] cookies = null; // 获取cookies的数据,是一个数组 cookies = request.getCookies(); if( cookies != null ){ out.println("<h2> 查找 Cookie 名与值</h2>"); for (int i = 0; i < cookies.length; i++){ cookie = cookies[i]; out.print("参数名 : " + cookie.getName()); out.print("<br>"); out.print("参数值: " + URLDecoder.decode(cookie.getValue(), "utf-8") +" <br>"); out.print("------------------------------------<br>"); } }else{ out.println("<h2>没有发现 Cookie</h2>"); } %> </body> </html>
브라우저 접속 후, 출력은 다음과 같습니다
쿠키를 삭제 JSP 사용
제거 쿠키는 매우 간단합니다. 당신이 쿠키를 삭제하려면, 라인에 할 수있는 다음 단계를 수행합니다 :
- 기존 쿠키가되는 것은 다음 쿠키 객체에 저장된다.
- 쿠키는 0으로 설정 될 것이다.
- 이 쿠키는 응답 헤더에 다시 추가됩니다.
예를 들면 데모
두 번째 실행 cookie.jsp 경우 다음 절차라는 이름의 쿠키를 삭제 "이름", 이름은 null이됩니다.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.net.*" %> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>获取 Cookie</title> </head> <body> <% Cookie cookie = null; Cookie[] cookies = null; // 获取当前域名下的cookies,是一个数组 cookies = request.getCookies(); if( cookies != null ){ out.println("<h2> 查找 Cookie 名与值</h2>"); for (int i = 0; i < cookies.length; i++){ cookie = cookies[i]; if((cookie.getName( )).compareTo("name") == 0 ){ cookie.setMaxAge(0); response.addCookie(cookie); out.print("删除 Cookie: " + cookie.getName( ) + "<br/>"); } out.print("参数名 : " + cookie.getName()); out.print("<br>"); out.print("参数值: " + URLDecoder.decode(cookie.getValue(), "utf-8") +" <br>"); out.print("------------------------------------<br>"); } }else{ out.println("<h2>没有发现 Cookie</h2>"); } %> </body> </html>
브라우저를 통해 접근, 출력은 :
또 다른 방문에 http : // localhost를 : 8080 / testjsp / cookie.jsp는 다음과 같은 결과를 얻을 것이다 :
당신은 이름 폭 = 쿠키가 사라졌다의 "70 %", "이름"을 볼 수 있습니다.
수동 브라우저에서 쿠키를 삭제할 수 있습니다. IE 브라우저의 도구 메뉴를 클릭, 당신은 모든 쿠키를 삭제, 쿠키 삭제를 누르고 인터넷 옵션을 선택합니다.