cookie的特性:
当我们再向相同域的相同目录的相同组件发出请求,这段文本还会提交。也就是说,只要是相同域下,都会自动提交,默认如此。 如果域名变了,就不会给发送了。
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
//这里可以直接在urlPatterns里配置多个路径
@WebServlet(name = "CookieServlet",urlPatterns = "/abc/bbc/cookie")
public class CookieServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//cookie是服务器写到客户端的一小段文本,
//是服务器存到客户端的数据,
//所以安全度不是很高。
//cookie只能存文本
//http协议只支持文本
Cookie c1 = new Cookie("name", "zhangssan");
c1.setComment("this is a uesr name!");
c1.setMaxAge(2 * 24 * 60 * 60);
// c1.setDomain("www.sina.com");
c1.setPath("/abc/abc");
c1.setSecure(true);
c1.setVersion(1);
response.addCookie(c1);
Cookie c2 = new Cookie("sex", "M");
Cookie c3 = new Cookie("passwo" + "rd", "1111");
//下面的两种方法是在响应头里添加了属性
// response.setHeader("set-name","name=zhnagsan" );
//这里我们发的cookie实际上是临时cookie,
//是存在缓存里头的。
//只有持久cookie能存成文件,
//而且不好找。
//因为这个文本存的地方是由浏览器来决定的。
response.addCookie(c2);
response.addCookie(c3);
}
}
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(name = "Cookie1Servlet",urlPatterns = "/cookie1")
public class Cookie1Servlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//cookie也可以像url重写和隐藏域一样,做同样的事情。
//request自动给分割数组对象
Cookie[] cs = request.getCookies();
for (Cookie c : cs) {
//取cookie对象时,用键和值的方法取。
System.out.println(c.getName() + ":" + c.getValue());
System.out.println(c.getComment());
}
}
}