JSP-쿠키 처리
이 장에서는 JSP의 쿠키 처리에 대해 설명합니다. 쿠키는 클라이언트 컴퓨터에 저장된 텍스트 파일이며 다양한 정보 추적 목적으로 보관됩니다. JSP는 기본 서블릿 기술을 사용하여 HTTP 쿠키를 투명하게 지원합니다.
사용자 식별 및 재 방문에는 세 단계가 있습니다.
서버 스크립트는 쿠키 세트를 브라우저로 보냅니다. 예 : 이름, 나이, 식별 번호 등
브라우저는 나중에 사용할 수 있도록이 정보를 로컬 시스템에 저장합니다.
다음에 브라우저가 웹 서버에 요청을 보낼 때 해당 쿠키 정보를 서버에 보내고 서버는 해당 정보를 사용하여 사용자를 식별하거나 다른 용도로 사용할 수도 있습니다.
이 장에서는 쿠키를 설정하거나 재설정하는 방법, 쿠키에 액세스하는 방법 및 JSP 프로그램을 사용하여 쿠키를 삭제하는 방법에 대해 설명합니다.
쿠키의 구조
쿠키는 일반적으로 HTTP 헤더에 설정됩니다 (JavaScript는 브라우저에서 직접 쿠키를 설정할 수도 있음). 쿠키를 설정하는 JSP는 다음과 같은 헤더를 보낼 수 있습니다.
HTTP/1.1 200 OK
Date: Fri, 04 Feb 2000 21:03:38 GMT
Server: Apache/1.3.9 (UNIX) PHP/4.0b3
Set-Cookie: name = xyz; expires = Friday, 04-Feb-07 22:03:38 GMT;
path = /; domain = tutorialspoint.com
Connection: close
Content-Type: text/html
보시다시피 Set-Cookie header 포함 a name value pair, a GMT date, a path 과 a domain. 이름과 값은 URL로 인코딩됩니다. 그만큼expires 필드는 브라우저에 대한 지침입니다. "forget" 주어진 시간과 날짜 이후의 쿠키.
브라우저가 쿠키를 저장하도록 구성된 경우 만료일까지이 정보를 보관합니다. 사용자가 쿠키의 경로 및 도메인과 일치하는 페이지에서 브라우저를 가리키면 쿠키를 서버로 다시 보냅니다. 브라우저의 헤더는 다음과 같을 수 있습니다.
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 스크립트는 요청 방법을 통해 쿠키에 액세스 할 수 있습니다. request.getCookies()Cookie 객체 의 배열을 반환 합니다.
서블릿 쿠키 방법
다음 표는 JSP에서 쿠키를 조작하는 동안 사용할 수있는 Cookie 객체와 관련된 유용한 방법을 나열합니다.
S. 아니. | 방법 및 설명 |
---|---|
1 | public void setDomain(String pattern) 이 방법은 쿠키가 적용되는 도메인을 설정합니다. 예 : tutorialspoint.com. |
2 | public String getDomain() 이 메서드는 쿠키가 적용되는 도메인을 가져옵니다. 예 : tutorialspoint.com. |
삼 | 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) 이 메서드는 쿠키가 암호화 된 (즉, SSL) 연결을 통해서만 전송되어야하는지 여부를 나타내는 부울 값을 설정합니다. |
11 | public void setComment(String purpose) 이 메소드는 쿠키의 목적을 설명하는 주석을 지정합니다. 주석은 브라우저가 사용자에게 쿠키를 제공하는 경우 유용합니다. |
12 | public String getComment() 이 메서드는이 쿠키의 목적을 설명하는 주석을 반환하거나 쿠키에 주석이없는 경우 null을 반환합니다. |
JSP로 쿠키 설정
JSP로 쿠키를 설정하려면 세 단계가 필요합니다.
1 단계 : 쿠키 개체 만들기
쿠키 이름과 쿠키 값 (둘 다 문자열)을 사용하여 Cookie 생성자를 호출합니다.
Cookie cookie = new Cookie("key","value");
이름이나 값에는 공백이나 다음 문자가 포함되어서는 안됩니다.
[ ] ( ) = , " / ? @ : ;
2 단계 : 최대 연령 설정
너는 사용한다 setMaxAge쿠키의 유효 기간 (초)을 지정합니다. 다음 코드는 24 시간 동안 쿠키를 설정합니다.
cookie.setMaxAge(60*60*24);
3 단계 : 쿠키를 HTTP 응답 헤더로 보내기
너는 사용한다 response.addCookie 다음과 같이 HTTP 응답 헤더에 쿠키를 추가하려면
response.addCookie(cookie);
예
이름과성에 대한 쿠키를 설정하기 위해 양식 예제 를 수정하겠습니다 .
<%
// Create cookies for first and last names.
Cookie firstName = new Cookie("first_name", request.getParameter("first_name"));
Cookie lastName = new Cookie("last_name", request.getParameter("last_name"));
// Set expiry date after 24 Hrs for both the cookies.
firstName.setMaxAge(60*60*24);
lastName.setMaxAge(60*60*24);
// Add both the cookies in the response header.
response.addCookie( firstName );
response.addCookie( lastName );
%>
<html>
<head>
<title>Setting Cookies</title>
</head>
<body>
<center>
<h1>Setting Cookies</h1>
</center>
<ul>
<li><p><b>First Name:</b>
<%= request.getParameter("first_name")%>
</p></li>
<li><p><b>Last Name:</b>
<%= request.getParameter("last_name")%>
</p></li>
</ul>
</body>
</html>
위의 코드를 main.jsp 파일 및 다음 HTML 페이지에서 사용-
<html>
<body>
<form action = "main.jsp" method = "GET">
First Name: <input type = "text" name = "first_name">
<br />
Last Name: <input type = "text" name = "last_name" />
<input type = "submit" value = "Submit" />
</form>
</body>
</html>
위의 HTML 콘텐츠를 파일에 보관 hello.jsp 그리고 넣어 hello.jsp 과 main.jsp 에 <Tomcat-installation-directory>/webapps/ROOT예배 규칙서. 액세스 할 때http://localhost:8080/hello.jsp, 다음은 위 양식의 실제 출력입니다.
이름과 성을 입력하고 제출 버튼을 클릭하십시오. 그러면 화면에 이름과 성이 표시되며 두 개의 쿠키도 설정됩니다.firstName 과 lastName. 이러한 쿠키는 다음에 제출 버튼을 클릭 할 때 서버로 다시 전달됩니다.
다음 섹션에서는 웹 애플리케이션에서 이러한 쿠키에 다시 액세스 할 수있는 방법을 설명합니다.
JSP로 쿠키 읽기
쿠키를 읽으려면 다음 을 호출하여 javax.servlet.http.Cookie 객체 의 배열을 만들어야합니다 .getCookies( )HttpServletRequest의 메소드 . 그런 다음 어레이를 순환하고getName() 과 getValue() 각 쿠키 및 관련 값에 액세스하는 방법.
예
이제 이전 예에서 설정 한 쿠키를 읽어 보겠습니다.
<html>
<head>
<title>Reading Cookies</title>
</head>
<body>
<center>
<h1>Reading Cookies</h1>
</center>
<%
Cookie cookie = null;
Cookie[] cookies = null;
// Get an array of Cookies associated with the this domain
cookies = request.getCookies();
if( cookies != null ) {
out.println("<h2> Found Cookies Name and Value</h2>");
for (int i = 0; i < cookies.length; i++) {
cookie = cookies[i];
out.print("Name : " + cookie.getName( ) + ", ");
out.print("Value: " + cookie.getValue( )+" <br/>");
}
} else {
out.println("<h2>No cookies founds</h2>");
}
%>
</body>
</html>
이제 위의 코드를 main.jsp파일에 액세스 해보십시오. 설정하면first_name cookie "John"과 last_name cookie "Player"로 다음 실행 http://localhost:8080/main.jsp 다음 결과가 표시됩니다-
Found Cookies Name and Value
Name : first_name, Value: John
Name : last_name, Value: Player
JSP로 쿠키 삭제
쿠키를 삭제하는 것은 매우 간단합니다. 쿠키를 삭제하려면 다음 세 단계를 따르기 만하면됩니다.
이미 존재하는 쿠키를 읽고 Cookie 객체에 저장합니다.
다음을 사용하여 쿠키 사용 기간을 0으로 설정하십시오. setMaxAge() 기존 쿠키를 삭제하는 방법.
이 쿠키를 응답 헤더에 다시 추가하십시오.
예
다음 예는 기존 쿠키를 삭제하는 방법을 보여줍니다. "first_name" 다음에 main.jsp JSP를 실행하면 first_name에 대해 null 값을 반환합니다.
<html>
<head>
<title>Reading Cookies</title>
</head>
<body>
<center>
<h1>Reading Cookies</h1>
</center>
<%
Cookie cookie = null;
Cookie[] cookies = null;
// Get an array of Cookies associated with the this domain
cookies = request.getCookies();
if( cookies != null ) {
out.println("<h2> Found Cookies Name and Value</h2>");
for (int i = 0; i < cookies.length; i++) {
cookie = cookies[i];
if((cookie.getName( )).compareTo("first_name") == 0 ) {
cookie.setMaxAge(0);
response.addCookie(cookie);
out.print("Deleted cookie: " +
cookie.getName( ) + "<br/>");
}
out.print("Name : " + cookie.getName( ) + ", ");
out.print("Value: " + cookie.getValue( )+" <br/>");
}
} else {
out.println(
"<h2>No cookies founds</h2>");
}
%>
</body>
</html>
이제 위의 코드를 main.jsp파일에 액세스 해보십시오. 다음 결과가 표시됩니다-
Cookies Name and Value
Deleted cookie : first_name
Name : first_name, Value: John
Name : last_name, Value: Player
이제 http : // localhost : 8080 / main.jsp 를 다시 한 번 실행 하면 다음과 같이 하나의 쿠키 만 표시됩니다.
Found Cookies Name and Value
Name : last_name, Value: Player
Internet Explorer에서 쿠키를 수동으로 삭제할 수 있습니다. 도구 메뉴에서 시작하고 인터넷 옵션을 선택합니다. 모든 쿠키를 삭제하려면 쿠키 삭제 버튼을 클릭하십시오.