Cookie,Session,Filter过滤器、Listener。

1、Cookie

1.1

Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。

1.2 使用步骤

 1.2.1 创建cookie对象

new Cookie(String name, String value)

        //创建一个Cookie
        Cookie cookie = new Cookie("username", "user01");

1.2.2 发送Cookie对象

(默认cookie的有效时间是整个浏览器关闭后才会销毁,哪怕服务器重启也不会没掉)

response.addCookie(Cookie cookie)

        //发送Cookie,把Cookie加入到响应数据当中
           resp.addCookie(cookie);

或者

resp.setHeader("set-cookie","username=9999");

1.2.3  获取cookie对象,拿到数据

Cookie[] cookies = request.getCookies()

1.2.4 设置Cookie时效(单位:秒)

哪怕浏览器关闭了、电脑关闭了,只要时间没到,cookie就不会销毁

正数:cookie数据写入磁盘中,持久化存储 cookie.setMaxAge(60)。

     

cookie.setMaxAge(60)

     负数:默认,当浏览器关闭的时候,cookie被销毁。

     0:删除cookie信息。

//给软件自动登录(保存之前登录过的账号密码)
//在用户第一次访问的时候登录到后端,后端给前端浏览器一个Cookie,有登录的信息以及到期时间
//在之后的每次打开软件的时候,浏览器像后端发起的所有接口会带上登录信息这个Cookie
        Cookie cookie = new Cookie("username", "user01");
        //设置Cookie的到期时间
        cookie.setMaxAge(60);
//        发送Cookie,把Cookie加入到响应数据当中
           resp.addCookie(cookie);

2. Session

Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。

2.1 工作原理

Session是依赖于Cookie的,当服务端创建session时,服务端在响应的时候会通知客户端把seesion id存储在cookie,后续的请求会在请求头里面会携带上cookie中的数据,服务端获取cookie携带的session id之后从session映射区里面获取对应的数据进行其他的操作。

2.2 使用步骤

2.2.1.  获取session对象

HttpSession session = request.getSession();

2.2.2.  设置数据

session.setAttribute(键, 值);

2.2.3 手动设置JSESSIONID,可以设置cookie时效性

   Cookie cookie = new Cookie("JSESSIONID", session.getId());

   cookie.setMaxAge(60 * 60);

   response.addCookie(cookie);

2.3 cookie和session的区别

1. session用于存储一次会话的多次请求的数据,存在服务端。

2. session可以存储任意类型,任意大小的数据。

3. session数据存在服务端,cookie存在客户端。

4. session没有数据大小限制,cookie有(一般是2K)。

5. session数据安全,cookie相对不安全。

3.  Filter过滤器

访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊功能。比如可以用于完成通用的操作,如:登录验证、统一编码处理、敏感字符过滤等等。

1. 定义一个类,实现接口javax.servlet.Filter。

2. 重写方法。

3. doFilter方法实现通用操作。

4. 配置拦截路径。

第一种:web.xml配置

第二种:使用注解

@WebFilter("路径")

//全部接口都拦截
@WebFilter("/*")
//放行
filterChain.doFilter(servletRequest,servletResponse);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值