Tomcat-Cookie

1、What:

Cookie是Web会话跟踪中的一种技术,其中还要Session,URL重写。

Cookie是将服务器中的一小部分加密后的用户信息放到浏览器的缓存中,Cookie最大的存储为4kb

2、How

创建Cookie的方式有:

1、通过构造器,并在通过response.addCookie(Cookie cookie)方法设置到响应头中

Cookie cookie=new Cookie(String name,String value);
resp.addCookie(cookie);

2、通过获取当前请求的Cookie值,修改Cookie的Value,在通过response.addCookie(Cookie cookie)方法设置到响应头中

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
                Cookie cookie=null;
		Cookie[] cookies = req.getCookies();
                for(int i=0;i<cookies.length;i++){
                    cookie=cookie[i];
                }

                cookie.setValue("nweValue");
                resp.addCookie(cookie);
                req.getRequestDispatcharServlet("/cookie.jsp").forword(req,resp);
                
}

3、在浏览器中按F12后者按组合键(ctrl+shift+j)调出控制台,观察

最开始的时候项目启动后Servlet会默认分配一个

 后面我们通过请求,修改默认的value,并添加自己的一个Cookie

 可以看到Request Heads中,在请求的时候是以  Cookie:JSESSIONID=value  的形式发送请求的,在响应的Response Headers中可以看到服务器返回告诉浏览器要保存Cookie的信息,如果在浏览器的缓存中已经存在有服务器返回的相同的key值,会覆盖掉原本的value值,浏览器缓存机制有点类似String的常量池存储特点,然后下次请求也会以Cookie :JSESSIONID=value 的形式发送请求

代码处理如下:

package com.cookie.demo;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class CookieServlet extends HttpServlet {
        /**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
		Cookie[] cookies = req.getCookies();
		if(null!=cookies){
			Cookie cookie1=null;
			String cValue=null;
			for(int i=0; i<cookies.length;i++){
				System.out.println(cookies[i]);
				System.out.println("Comment:"+cookies[i].getComment());
				System.out.println("Domain:"+cookies[i].getDomain());
				System.out.println("MaxAge:"+cookies[i].getMaxAge());
				System.out.println("Name:"+cookies[i].getName());
				System.out.println("Path:"+cookies[i].getPath());
				System.out.println("Value:"+cookies[i].getValue());
				System.out.println("Class:"+cookies[i].getClass());
				cookie1=cookies[i];
			}
			cookie1.setValue("HaHa");
			 cValue = cookie1.getValue();
			 System.out.println("修改值:"+cValue);
			 cookie1.setMaxAge(30);
			Cookie cookie2 = new Cookie("k1", "v1");
			cookie2.setMaxAge(-1);
			resp.addCookie(cookie1);
			resp.addCookie(cookie2);
			
			req.getRequestDispatcher("/cookie.jsp").forward(req, resp);
		}else{
			Cookie cookie = new Cookie("key2", "v2");
			resp.addCookie(cookie);
			req.getRequestDispatcher("/cookie.jsp").forward(req, resp);
			
		}
	
	}
	
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {
		
	}
}

Cookie中常用的方法有:

            //设置生命周期
            cookie.setMaxAge(int second);
            //修改新的值
            cookie.setValue(String newValue);
            //获取JSESSIONID
            cookie.getName();
            //获取Value
            //设置访问路径
            cookie.setPath(String uri)

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值