b)如何创建 Cookie
Servlet 程序中的代码:
public class CookieServlet extends BaseServlet {
/**
* 创建Cookie
* @param req
* @param resp
* @throws ServletException
* @throws IOException
*/
protected void createCookie(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1 创建Cookie对象
Cookie cookie = new Cookie("key1","value");
//2 通知客户端保存Cookie
resp.addCookie(cookie);
//1 创建Cookie对象
Cookie cookie1 = new Cookie("key2", "value");
//2 通知客户端保存Cookie
resp.addCookie(cookie1);
resp.getWriter().write("Cookie创建成功了");
}
}
cookie.html的修改:
<title>Cookie</title>
<base href="http://localhost:8080/12_Cookie_Session/">
<style type="text/css">
<li><a href="cookieServlet?action=createCookie" target="target">Cookie的创建</a></li>
常用方法
c)服务器如何获取 Cookie
服务器获取客户端的 Cookie 只需要一行代码:
req.getCookies():Cookie[]
Servlet 程序中的代码:
/**
* 获取Cookie
* @param req
* @param resp
* @throws ServletException
* @throws IOException
*/
protected void getCookie(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Cookie[] cookies = req.getCookies();
for (Cookie cookie : cookies) {
// getName方法返回Cookie的key(名
// getValue方法返回Cookie的value值
resp.getWriter().write("Cookie[" + cookie.getName() + "=" + cookie.getValue() + "]<br/>");
}
Cookie iWantCookie = CookieUtils.findCookie("key1",cookies);
// 如果不等于null,说明赋过值,也就是找到了需要的Cookie
if(iWantCookie != null){
resp.getWriter().write("你想要的Cookie找到了");
}
}
Cookie 的工具类:
/**
* 查找指定名称的Cookie对象
**/
public class CookieUtils {
public static Cookie findCookie(String name,Cookie[] cookies){
if(name == null || cookies.length == 0 || cookies == null){
return null;
}
for (Cookie cookie : cookies) {
if(name.equals(cookie.getName())){
return cookie;
}
}
return null;
}
}
cookie.html的修改:
<li><a href="cookieServlet?action=getCookie" target="target">Cookie的获取</a></li>
d)Cookie 值的修改
servlet程序:
方案一:
1、先创建一个要修改的同名(指的就是 key)的 Cookie 对象
2、在构造器,同时赋于新的 Cookie 值。
3、调用 response.addCookie(Cookie);
// 方案一:
// 1、先创建一个要修改的同名的Cookie对象
// 2、在构造器,同时赋于新的Cookie值。
Cookie cookie = new Cookie("key1", "newValue1");
resp.addCookie(cookie);
// 3、调用response.addCookie( Cookie ); 通知 客户端 保存修改
resp.getWriter().write("key1的值已经被修改了");
方案二:
1、先查找到需要修改的 Cookie 对象
2、调用 setValue()方法赋于新的 Cookie 值。
3、调用 response.addCookie()通知客户端保存修改
// 方案二:
// 1、先查找到需要修改的Cookie对象
Cookie key2 = CookieUtils.findCookie("key2", req.getCookies());
// 2、调用setValue()方法赋于新的Cookie值。
key2.setValue("newValue2");
// 3、调用response.addCookie()通知客户端保存修改
resp.addCookie(key2);
resp.getWriter().write("key2的值已经被修改了");
cookie.html的修改: