您的位置:首页 > 其它

学习笔记(二):cookie的基本使用

2014-04-09 12:51 288 查看
(最近在看马士兵老师的java web视频,遂记录以铭之)

一、简介

Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器(前提是浏览器设置为启用cookie)。Cookie名称和值可以由服务器端开发自己定义,服务器可以设置或读取Cookies中包含信息,借此维护用户跟服务器会话中的状态。

Cookies最典型的应用是判定注册用户是否已经登录网站,用户可能会得到提示,是否在下一次进入此网站时保留用户信息以便简化登录手续,这些都是Cookies的功用。另一个重要应用场合是“购物车”之类处理。用户可能会在一段时间内在同一家网站的不同页面中选择不同的商品,这些信息都会写入Cookies,以便在最后付款时提取信息。

二、使用

创建cookie: new Cookie(name, value)
可以使用Cookie的setXxx方法来设定一些相应的值

setName(String name) / getName() //设置一个cookie的name

setValue(String value) / getValue() //设置一个cookie的value

setMaxAge(int age) / getMaxAge() //如果没有设置,则表示该cookie只属于某个窗口

利用HttpServletResponse的addCookie(Cookie)方法将它设置到客户端
利用HttpServletRequest的getCookie()方法来读取客户端的所有Cookie,返回一个Cookie数组

三、几点重要说明

1. 服务器可以利用cookie向客户端写内容

2. 只能是文本内容

3. 客户端可以阻止服务器写入

4. 只能拿自己webapp写入的东西

5. cookie分为两种: 属于窗口/子窗口、属于文本(利用setMaxAge设置了生存时间)

6. 一个Servlet/Jsp设置的cookies能够被同一个路径下面、或者子路径下面的servlet/jsp读到,(路径=URL)(路径 != 真实文件路径)

四、例子程序

设置Cookie:

public class SetCookies extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		for(int i =0;i < 3;i++) {
			Cookie cookie = new Cookie("Session-Cookie-" + i, "Cookie-Value-S" + i);
			resp.addCookie(cookie);
			cookie = new Cookie("Persistent-Cookie-" + i, "Cookie-Value-P" + i);
			cookie.setMaxAge( 3600 );
			resp.addCookie(cookie);
		}
	}

}
读取Cookie:



public class ShowCookies extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		resp.setContentType("text/html;charset=gb2312");
		PrintWriter out = resp.getWriter();
		String title = "Active Cookies";
		out.println("<html><head><title>获取客户端cookie</title></head>"
				+"<BODY BGCOLOR=\"#FDF5E6\">\n" + "<H1 ALIGN=\"CENTER\">"
				+ title + "</H1>\n" + "<TABLE BORDER=1 ALIGN=\"CENTER\">\n"
				+ "<TR BGCOLOR=\"FFADOO\">\n" + "<TH>Cookie Name\n"
				+ "  <TH>Cookie Value");
		Cookie[] cookies = req.getCookies();
		if(cookies != null) {
			for(Cookie cookie : cookies) {
				out.println("<TR>\n" + "  <TD>" + cookie.getName() + "</TD>\n" 
						+ "   <TD>" + cookie.getValue() + "</TD></TR>\n");
			}
		}
		out.println("</TABLE></BODY></HTML>");
	}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: