<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FNetwork%2FCookie</id>
		<title>Java Tutorial/Network/Cookie - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FNetwork%2FCookie"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/Network/Cookie&amp;action=history"/>
		<updated>2026-04-22T01:29:44Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java_Tutorial/Network/Cookie&amp;diff=4602&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/Network/Cookie&amp;diff=4602&amp;oldid=prev"/>
				<updated>2010-06-01T05:03:27Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 05:03, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java_Tutorial/Network/Cookie&amp;diff=4601&amp;oldid=prev</id>
		<title> в 17:44, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/Network/Cookie&amp;diff=4601&amp;oldid=prev"/>
				<updated>2010-05-31T17:44:27Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==  CookieStore ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.io.BufferedReader;&lt;br /&gt;
import java.io.InputStream;&lt;br /&gt;
import java.io.InputStreamReader;&lt;br /&gt;
import java.net.CookieHandler;&lt;br /&gt;
import java.net.CookieManager;&lt;br /&gt;
import java.net.CookiePolicy;&lt;br /&gt;
import java.net.CookieStore;&lt;br /&gt;
import java.net.HttpCookie;&lt;br /&gt;
import java.net.URI;&lt;br /&gt;
import java.net.URL;&lt;br /&gt;
import java.net.URLConnection;&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.Collection;&lt;br /&gt;
import java.util.HashMap;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
import java.util.Map;&lt;br /&gt;
import java.util.Set;&lt;br /&gt;
&lt;br /&gt;
public class WebClient {&lt;br /&gt;
  public static void main(String[] args) throws Exception {&lt;br /&gt;
    CookieStore store = new MyCookieStore();&lt;br /&gt;
    CookiePolicy policy = new MyCookiePolicy();&lt;br /&gt;
    CookieManager handler = new CookieManager(store, policy);&lt;br /&gt;
    CookieHandler.setDefault(handler);&lt;br /&gt;
    URL url = new URL(&amp;quot;http://localhost:8080/cookieTest.jsp&amp;quot;);&lt;br /&gt;
    URLConnection conn = url.openConnection();&lt;br /&gt;
    InputStream in = conn.getInputStream();&lt;br /&gt;
    BufferedReader reader = new BufferedReader(new InputStreamReader(in));&lt;br /&gt;
    String input;&lt;br /&gt;
    while ((input = reader.readLine()) != null) {&lt;br /&gt;
      System.out.println(input);&lt;br /&gt;
    }&lt;br /&gt;
    reader.close();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class MyCookiePolicy implements CookiePolicy {&lt;br /&gt;
  public boolean shouldAccept(URI uri, HttpCookie cookie) {&lt;br /&gt;
//    String host = uri.getHost();&lt;br /&gt;
  //  return host.equals(&amp;quot;localhost&amp;quot;);&lt;br /&gt;
    return true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class MyCookieStore implements CookieStore {&lt;br /&gt;
  private Map&amp;lt;URI, List&amp;lt;HttpCookie&amp;gt;&amp;gt; map = new HashMap&amp;lt;URI, List&amp;lt;HttpCookie&amp;gt;&amp;gt;();&lt;br /&gt;
  public void add(URI uri, HttpCookie cookie) {&lt;br /&gt;
    List&amp;lt;HttpCookie&amp;gt; cookies = map.get(uri);&lt;br /&gt;
    if (cookies == null) {&lt;br /&gt;
      cookies = new ArrayList&amp;lt;HttpCookie&amp;gt;();&lt;br /&gt;
      map.put(uri, cookies);&lt;br /&gt;
    }&lt;br /&gt;
    cookies.add(cookie);&lt;br /&gt;
  }&lt;br /&gt;
  public List&amp;lt;HttpCookie&amp;gt; get(URI uri) {&lt;br /&gt;
    List&amp;lt;HttpCookie&amp;gt; cookies = map.get(uri);&lt;br /&gt;
    if (cookies == null) {&lt;br /&gt;
      cookies = new ArrayList&amp;lt;HttpCookie&amp;gt;();&lt;br /&gt;
      map.put(uri, cookies);&lt;br /&gt;
    }&lt;br /&gt;
    return cookies;&lt;br /&gt;
  }&lt;br /&gt;
  public List&amp;lt;HttpCookie&amp;gt; getCookies() {&lt;br /&gt;
    Collection&amp;lt;List&amp;lt;HttpCookie&amp;gt;&amp;gt; values = map.values();&lt;br /&gt;
    List&amp;lt;HttpCookie&amp;gt; result = new ArrayList&amp;lt;HttpCookie&amp;gt;();&lt;br /&gt;
    for (List&amp;lt;HttpCookie&amp;gt; value : values) {&lt;br /&gt;
      result.addAll(value);&lt;br /&gt;
    }&lt;br /&gt;
    return result;&lt;br /&gt;
  }&lt;br /&gt;
  public List&amp;lt;URI&amp;gt; getURIs() {&lt;br /&gt;
    Set&amp;lt;URI&amp;gt; keys = map.keySet();&lt;br /&gt;
    return new ArrayList&amp;lt;URI&amp;gt;(keys);&lt;br /&gt;
  }&lt;br /&gt;
  public boolean remove(URI uri, HttpCookie cookie) {&lt;br /&gt;
    List&amp;lt;HttpCookie&amp;gt; cookies = map.get(uri);&lt;br /&gt;
    if (cookies == null) {&lt;br /&gt;
      return false;&lt;br /&gt;
    }&lt;br /&gt;
    return cookies.remove(cookie);&lt;br /&gt;
  }&lt;br /&gt;
  public boolean removeAll() {&lt;br /&gt;
    map.clear();&lt;br /&gt;
    return true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
The cookieTest.jsp page&lt;br /&gt;
&lt;br /&gt;
&amp;lt;%&lt;br /&gt;
    Cookie cookie = new Cookie (&amp;quot;username&amp;quot;, &amp;quot;guest&amp;quot;);&lt;br /&gt;
    cookie.setMaxAge (100);&lt;br /&gt;
    response.addCookie (cookie);&lt;br /&gt;
%&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;HttpCookie Demo&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
Add cookie. Cookie name = &amp;lt;%=cookie.getName () +&amp;quot;. Cookie value = &amp;quot; + cookie.getValue () %&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//Reference:&lt;br /&gt;
//Java 6 New Features: A Tutorial&lt;br /&gt;
//by Budi Kurniawan &lt;br /&gt;
//Brainy Software Corp. 2006&lt;br /&gt;
//Chapter 4 - Networking&lt;br /&gt;
//# ISBN-10: 0975212885&lt;br /&gt;
//# ISBN-13: 978-0975212882&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Fetch Cookie with CookieHandler, CookieManager and CookieStore ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.net.CookieHandler;&lt;br /&gt;
import java.net.CookieManager;&lt;br /&gt;
import java.net.CookieStore;&lt;br /&gt;
import java.net.HttpCookie;&lt;br /&gt;
import java.net.URL;&lt;br /&gt;
import java.net.URLConnection;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
public class FetchCookie {&lt;br /&gt;
  public static void main(String args[]) throws Exception {&lt;br /&gt;
    String urlString = &amp;quot;http://java.sun.ru&amp;quot;;&lt;br /&gt;
    CookieManager manager = new CookieManager();&lt;br /&gt;
    CookieHandler.setDefault(manager);&lt;br /&gt;
    URL url = new URL(urlString);&lt;br /&gt;
    URLConnection connection = url.openConnection();&lt;br /&gt;
    Object obj = connection.getContent();&lt;br /&gt;
    url = new URL(urlString);&lt;br /&gt;
    connection = url.openConnection();&lt;br /&gt;
    obj = connection.getContent();&lt;br /&gt;
    CookieStore cookieJar = manager.getCookieStore();&lt;br /&gt;
    List&amp;lt;HttpCookie&amp;gt; cookies = cookieJar.getCookies();&lt;br /&gt;
    for (HttpCookie cookie : cookies) {&lt;br /&gt;
      System.out.println(cookie);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Using CookieHandler in Java 5 ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
#Code referenced from &lt;br /&gt;
#Chapter 6 - Extensible Markup Language (XML)&lt;br /&gt;
#Java 6 Platform Revealed&lt;br /&gt;
#by John Zukowski &lt;br /&gt;
#ISBN: 1590596609&lt;br /&gt;
#http://www.apress.ru/book/bookDisplay.html?bID=10109&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import java.net.CookieHandler;&lt;br /&gt;
import java.net.URI;&lt;br /&gt;
import java.net.URL;&lt;br /&gt;
import java.net.URLConnection;&lt;br /&gt;
import java.text.DateFormat;&lt;br /&gt;
import java.text.ParseException;&lt;br /&gt;
import java.text.SimpleDateFormat;&lt;br /&gt;
import java.util.Collections;&lt;br /&gt;
import java.util.Date;&lt;br /&gt;
import java.util.HashMap;&lt;br /&gt;
import java.util.LinkedList;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
import java.util.Locale;&lt;br /&gt;
import java.util.Map;&lt;br /&gt;
public class Fetch5 {&lt;br /&gt;
  public static void main(String args[]) throws Exception {&lt;br /&gt;
    String urlString = &amp;quot;java.sun.ru&amp;quot;;&lt;br /&gt;
    CookieHandler.setDefault(new ListCookieHandler());&lt;br /&gt;
    URL url = new URL(urlString);&lt;br /&gt;
    URLConnection connection = url.openConnection();&lt;br /&gt;
    Object obj = connection.getContent();&lt;br /&gt;
    url = new URL(urlString);&lt;br /&gt;
    connection = url.openConnection();&lt;br /&gt;
    obj = connection.getContent();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class ListCookieHandler extends CookieHandler {&lt;br /&gt;
  private List&amp;lt;Cookie&amp;gt; cookieJar = new LinkedList&amp;lt;Cookie&amp;gt;();&lt;br /&gt;
  public void put(URI uri, Map&amp;lt;String, List&amp;lt;String&amp;gt;&amp;gt; responseHeaders) throws IOException {&lt;br /&gt;
    List&amp;lt;String&amp;gt; setCookieList = responseHeaders.get(&amp;quot;Set-Cookie&amp;quot;);&lt;br /&gt;
    if (setCookieList != null) {&lt;br /&gt;
      for (String item : setCookieList) {&lt;br /&gt;
        Cookie cookie = new Cookie(uri, item);&lt;br /&gt;
        for (Cookie existingCookie : cookieJar) {&lt;br /&gt;
          if ((cookie.getURI().equals(existingCookie.getURI()))&lt;br /&gt;
              &amp;amp;&amp;amp; (cookie.getName().equals(existingCookie.getName()))) {&lt;br /&gt;
            cookieJar.remove(existingCookie);&lt;br /&gt;
            break;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
        cookieJar.add(cookie);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public Map&amp;lt;String, List&amp;lt;String&amp;gt;&amp;gt; get(URI uri, Map&amp;lt;String, List&amp;lt;String&amp;gt;&amp;gt; requestHeaders)&lt;br /&gt;
      throws IOException {&lt;br /&gt;
    StringBuilder cookies = new StringBuilder();&lt;br /&gt;
    for (Cookie cookie : cookieJar) {&lt;br /&gt;
      // Remove cookies that have expired&lt;br /&gt;
      if (cookie.hasExpired()) {&lt;br /&gt;
        cookieJar.remove(cookie);&lt;br /&gt;
      } else if (cookie.matches(uri)) {&lt;br /&gt;
        if (cookies.length() &amp;gt; 0) {&lt;br /&gt;
          cookies.append(&amp;quot;, &amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
        cookies.append(cookie.toString());&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    Map&amp;lt;String, List&amp;lt;String&amp;gt;&amp;gt; cookieMap = new HashMap&amp;lt;String, List&amp;lt;String&amp;gt;&amp;gt;(requestHeaders);&lt;br /&gt;
    if (cookies.length() &amp;gt; 0) {&lt;br /&gt;
      List&amp;lt;String&amp;gt; list = Collections.singletonList(cookies.toString());&lt;br /&gt;
      cookieMap.put(&amp;quot;Cookie&amp;quot;, list);&lt;br /&gt;
    }&lt;br /&gt;
    System.out.println(&amp;quot;CookieMap: &amp;quot; + cookieMap);&lt;br /&gt;
    return Collections.unmodifiableMap(cookieMap);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class Cookie {&lt;br /&gt;
  String name;&lt;br /&gt;
  String value;&lt;br /&gt;
  URI uri;&lt;br /&gt;
  String domain;&lt;br /&gt;
  Date expires;&lt;br /&gt;
  String path;&lt;br /&gt;
  private static DateFormat expiresFormat1 = new SimpleDateFormat(&amp;quot;E, dd MMM yyyy k:m:s &amp;quot;GMT&amp;quot;&amp;quot;,&lt;br /&gt;
      Locale.US);&lt;br /&gt;
  private static DateFormat expiresFormat2 = new SimpleDateFormat(&amp;quot;E, dd-MMM-yyyy k:m:s &amp;quot;GMT&amp;quot;&amp;quot;,&lt;br /&gt;
      Locale.US);&lt;br /&gt;
  public Cookie(URI uri, String header) {&lt;br /&gt;
    String attributes[] = header.split(&amp;quot;;&amp;quot;);&lt;br /&gt;
    String nameValue = attributes[0].trim();&lt;br /&gt;
    this.uri = uri;&lt;br /&gt;
    this.name = nameValue.substring(0, nameValue.indexOf(&amp;quot;=&amp;quot;));&lt;br /&gt;
    this.value = nameValue.substring(nameValue.indexOf(&amp;quot;=&amp;quot;) + 1);&lt;br /&gt;
    this.path = &amp;quot;/&amp;quot;;&lt;br /&gt;
    this.domain = uri.getHost();&lt;br /&gt;
    for (int i = 1; i &amp;lt; attributes.length; i++) {&lt;br /&gt;
      nameValue = attributes[i].trim();&lt;br /&gt;
      int equals = nameValue.indexOf(&amp;quot;=&amp;quot;);&lt;br /&gt;
      if (equals == -1) {&lt;br /&gt;
        continue;&lt;br /&gt;
      }&lt;br /&gt;
      String name = nameValue.substring(0, equals);&lt;br /&gt;
      String value = nameValue.substring(equals + 1);&lt;br /&gt;
      if (name.equalsIgnoreCase(&amp;quot;domain&amp;quot;)) {&lt;br /&gt;
        String uriDomain = uri.getHost();&lt;br /&gt;
        if (uriDomain.equals(value)) {&lt;br /&gt;
          this.domain = value;&lt;br /&gt;
        } else {&lt;br /&gt;
          if (!value.startsWith(&amp;quot;.&amp;quot;)) {&lt;br /&gt;
            value = &amp;quot;.&amp;quot; + value;&lt;br /&gt;
          }&lt;br /&gt;
          uriDomain = uriDomain.substring(uriDomain.indexOf(&amp;quot;.&amp;quot;));&lt;br /&gt;
          if (!uriDomain.equals(value)) {&lt;br /&gt;
            throw new IllegalArgumentException(&amp;quot;Trying to set foreign cookie&amp;quot;);&lt;br /&gt;
          }&lt;br /&gt;
          this.domain = value;&lt;br /&gt;
        }&lt;br /&gt;
      } else if (name.equalsIgnoreCase(&amp;quot;path&amp;quot;)) {&lt;br /&gt;
        this.path = value;&lt;br /&gt;
      } else if (name.equalsIgnoreCase(&amp;quot;expires&amp;quot;)) {&lt;br /&gt;
        try {&lt;br /&gt;
          this.expires = expiresFormat1.parse(value);&lt;br /&gt;
        } catch (ParseException e) {&lt;br /&gt;
          try {&lt;br /&gt;
            this.expires = expiresFormat2.parse(value);&lt;br /&gt;
          } catch (ParseException e2) {&lt;br /&gt;
            throw new IllegalArgumentException(&amp;quot;Bad date format in header: &amp;quot; + value);&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public boolean hasExpired() {&lt;br /&gt;
    if (expires == null) {&lt;br /&gt;
      return false;&lt;br /&gt;
    }&lt;br /&gt;
    Date now = new Date();&lt;br /&gt;
    return now.after(expires);&lt;br /&gt;
  }&lt;br /&gt;
  public String getName() {&lt;br /&gt;
    return name;&lt;br /&gt;
  }&lt;br /&gt;
  public URI getURI() {&lt;br /&gt;
    return uri;&lt;br /&gt;
  }&lt;br /&gt;
  public boolean matches(URI uri) {&lt;br /&gt;
    if (hasExpired()) {&lt;br /&gt;
      return false;&lt;br /&gt;
    }&lt;br /&gt;
    String path = uri.getPath();&lt;br /&gt;
    if (path == null) {&lt;br /&gt;
      path = &amp;quot;/&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    return path.startsWith(this.path);&lt;br /&gt;
  }&lt;br /&gt;
  public String toString() {&lt;br /&gt;
    StringBuilder result = new StringBuilder(name);&lt;br /&gt;
    result.append(&amp;quot;=&amp;quot;);&lt;br /&gt;
    result.append(value);&lt;br /&gt;
    return result.toString();&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>