Latest web development tutorials

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 브라우저의 도구 메뉴를 클릭, 당신은 모든 쿠키를 삭제, 쿠키 삭제를 누르고 인터넷 옵션을 선택합니다.