javaWeb-Cookie和Session

《一:Cookie》

1.简介:
    是一种  客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的浏览器中的cookie.当用户再去访问服务器中的web资源时,会带着各自的数据去访问;它是通过响应的方式放入cookie入浏览器的;其在浏览器中就是以entry保存着数据而已。
2.实际操作:
    //1.在需要保存参数的页面中,传入参数创建cookie
    Cookie cookie = new Cookie(name, value);
    //2.把cookie放入响应中
    resp.addCookie(cookie);
    //3.在需要参数的位置迭代/比较取出某个参数
    Cookie[] cookie = req.getCookies();
    for(Cookie c: cookie){
       if(c.getName().equals(“username”)){
          username = c.getValues();
          break;
        }
    }
3.修改Cookie中的数据:
//两者都得在cookie.addCookie(cookie);之前
cookie.setValue(String val);
Cookie cookie = new Cookie(String name, String value);
4.cookie的分类:
1.会话Cookie: 把cookie数据存放在浏览器内存中,一旦关闭浏览器,cookie就被销毁了,默认是此方式。
2.持久化cookie:    把cookie数据存在一个文件中(非内存,供下次使用),实现:给cookie设置最大的存活时间删除cookie值设置为0//(也要在cookie.addCookie(cookie);之前)
cookie.setMaxAge(int seconds);
5.解决cookie中文存取问题:
存:Cookie cookie = new Cookie(“username”, URLEncoder.encode(username, “utf-8”) );
取:username = URLDecoder.decode(cookie.getValue(), “utf-8”);
6.Cookie的缺陷:
1.不安全,只因保存数据再cookie依然不透明。

2.一个cookie只能存一个数据;因为cookie里的value只能存String.

3.存取的大小和数量都有限制
session解决

《二:Session》

1.简介(会话cookie演变而来,故无持久化,本质是会话session):
   是服务器端技术,当用户的每一个浏览器发出请求的时候,在服务端创建一块内存空间,空间地址为JSESSIONID,在该空间可以存放多个任意类型的数据。以后每次浏览器再一次会话期内访问资源时,服务器吧该内存空间的地址的值响应给浏览器,后者通过ID即可找到内存,进而取出里面的值。
2.操作:
//1.创建并获取session
HttpSession getSession():       从请求中获取,有则返回,无则创建一个返回
HttpSession getSession(true):   同上
HttpSession getSession(false):  有则返回,无则返回空集

//2.向Session中存数据(Session是Map结构,存入session的对象要实现serializable接口):
void setAttribute(String name, Object value)//最终数据要强转

HttpSession session = req.getSession();
session.setAttribute(“USERNAME_IN_SESSION”, username);

//3.取出Session中的数据:
req.getSession().getAttribute(“XX_IN_SESSION”);

String username = (String)req.getSession().getAttribute(“USERNAME_IN_SESSION”);

//4.修改session中的数据(重新设置同名属性覆盖先前的值):
req.getSession().setAttribute(String name, Object value)

//5.删除session中的数据:
1.删除sessio中的某个属性:req.getSession().removeAttribute(String name)
2.销毁Session内存:               req.getSession().invalidate();

//6.Session的超时管理:
手动设置:
1.req.getSesssion().setMaxInactiveInterval(int Seconds) :常不用
2.在当前web项目的web.xml中:
<session-config>
    <session-timeout>30</session-timeout>
</session-config>
默认:
    Tomcat/config/web.xml中已设置30分钟。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值