首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

javaee-cookie响应,请求小便

2012-08-09 
javaee-cookie响应,请求小解1.cookie是首先由服务器向浏览器发送的?? cookie最早来源于服务器,它像浏览器

javaee-cookie响应,请求小解

1.cookie是首先由服务器向浏览器发送的

?

? cookie最早来源于服务器,它像浏览器发送的响应头,如下:

?

?

Cookie ckName = new Cookie("name", name);Cookie ckNickname = new Cookie("nickname", nickname);ckNickname.setMaxAge(365 * 24 * 3600);Cookie ckEmail = new Cookie("email", "test1@it315.org");Cookie ckPhone = new Cookie("phone", "1111111");//奇怪,针对chrome就不生成JSESSIONIDresponse.addCookie(ckName);response.addCookie(ckNickname);response.addCookie(ckEmail);response.addCookie(ckPhone);?

?

?

2.浏览器返回cookie信息

?

? ? 浏览器在收到服务器发送的cookie时,存储起来,并在每次向服务器请求时重新将cookie信息返回。如下:

?

String lastNickname = null;Cookie[] cks = request.getCookies();for (int i = 0; cks != null && i < cks.length; i++) {if ("nickname".equals(cks[i].getName())) {lastNickname = cks[i].getValue();break;}}

?

?

? ?或者也可以这么取

?

?

String cookieHeader = request.getHeader("Cookie");
?

?

? ?可以通过:http://localhost:8080/Test_servlet/ch7/CookieServlet1?name=admin&nickname=nick_admin

查看效果。

?

?

3.Cookie源代码

?

?

? ??Cookie类,真是难得一见的类,不是接口。

?

package javax.servlet.http;import java.text.MessageFormat;import java.util.ResourceBundle;public class Cookie  implements Cloneable{  private static final String LSTRING_FILE = "javax.servlet.http.LocalStrings";  private static ResourceBundle lStrings = ResourceBundle.getBundle("javax.servlet.http.LocalStrings");  private String name;  private String value;  private String comment;  private String domain;  private int maxAge = -1;  private String path;  private boolean secure;  private int version = 0;  private static final String tspecials = ",; ";  public Cookie(String name, String value)  {    if ((!(isToken(name))) || (name.equalsIgnoreCase("Comment")) || (name.equalsIgnoreCase("Discard")) || (name.equalsIgnoreCase("Domain")) || (name.equalsIgnoreCase("Expires")) || (name.equalsIgnoreCase("Max-Age")) || (name.equalsIgnoreCase("Path")) || (name.equalsIgnoreCase("Secure")) || (name.equalsIgnoreCase("Version")) || (name.startsWith("$")))    {      String errMsg = lStrings.getString("err.cookie_name_is_token");      Object[] errArgs = new Object[1];      errArgs[0] = name;      errMsg = MessageFormat.format(errMsg, errArgs);      throw new IllegalArgumentException(errMsg);    }    this.name = name;    this.value = value;  }  public void setComment(String purpose)  {    this.comment = purpose;  }  public String getComment()  {    return this.comment;  }  public void setDomain(String pattern)  {    this.domain = pattern.toLowerCase();  }  public String getDomain()  {    return this.domain;  }  public void setMaxAge(int expiry)  {    this.maxAge = expiry;  }  public int getMaxAge()  {    return this.maxAge;  }  public void setPath(String uri)  {    this.path = uri;  }  public String getPath()  {    return this.path;  }  public void setSecure(boolean flag)  {    this.secure = flag;  }  public boolean getSecure()  {    return this.secure;  }  public String getName()  {    return this.name;  }  public void setValue(String newValue)  {    this.value = newValue;  }  public String getValue()  {    return this.value;  }  public int getVersion()  {    return this.version;  }  public void setVersion(int v)  {    this.version = v;  }  private boolean isToken(String value)  {    int len = value.length();    for (int i = 0; i < len; ++i) {      char c = value.charAt(i);      if ((c < ' ') || (c >= '') || (",; ".indexOf(c) != -1))        return false;    }    return true;  }  public Object clone()  {    try    {      return super.clone();    } catch (CloneNotSupportedException e) {      throw new RuntimeException(e.getMessage());    }  }}

?

参考:《深入体验Java_Web开发内幕-核心基础\》

?

……

……

?

?

?

?

热点排行