JSP的Cookie与Session(笔记)

一、Cookie与Session区别

CookieSession
内置对象
保存位置客户端服务器
安全性较不安全较安全
保存内容格式StringObject

有效范围

单个浏览器所属

写在JSP中,将会所有浏览器共享

同一浏览器不同页面共享

二、基本使用

1.Cookie

存储在本地,由浏览器管理。用来存储一些常用数据。

同一浏览器可访问。

在第三次握手中的最后一次,客户端会将对应Cookie同报文同时发给服务器端。


Cookie来自于javax.servlet.http.Cookie

主要方法:

        public Cookie(string name,String Value)

        cookie.setMaxAge();//最大有效期(秒)

        String getName()

        String getValue()

服务端

Cookie cookie = new Cookie("name","zs");//建议使用英文,避免编码问题
cookie.setMaxAge(10);//最大有效期10s
response.addCookie(cookie);//添加至响应中
response.sendRedirect("目标网址");//通过重定向返给客户端

客户端

获取Cookie是一次性获取当前域名的所有Cookie,因此需要遍历来比较。

<%!
    String uname;
%>
<%
Cookie[] cookies = request.getCookies();
for(Cookie cookie:cookies){
    if(cookie.getName().equals("uname")){
        uname = cookie.getValue();
    }
}
%>

注意:有些浏览器默认记住用户名一类,因此可能不好判断是否失效

2.Session

保存在服务器中,主要用于会话,存储其状态。

服务端产生session对象,每一个对象有一个唯一sessionID。同时生成一个jsessionID并通过Cookie(自动生成,不需要用户去创建)将jsessionID发送给客户端。jsessionID的值与即为sessionID的值。

在三次握手中的最后一次,客户端发送给服务端的cookie中包含jsessionID。服务器会匹配jsessionID,无匹配对象则为第一次访问,有匹配则不为第一次。

同一用户可在同一浏览器的所有页面通过请求服务器,访问session内容。


session为内置对象。

主要方法

        String getId() 

        boolean isNew()

        void invalidate()

        setAttribute()

        getAttribute()

        void setMaxInactiveInterval()最大有效非活动时间(秒)

服务端

<%
session.setAttribute("uname","zs");
request.getRequestDispatcher("目标页面").forward(request,response);
%>

转发或重定向都可以将jsessionID发给客户端

客户端

<%
    String name = session.getAttribute("uname");
%>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值