java小白的第42课——cookie&Filter(过滤器)

cookie

数据传递的方式

  • JSP中数据传递的方向
    • 视图层 → 控制层(请求)
      1. 表单提交数据
      2. url链接请求并携带数据
      3. ajax
    • 控制层 → 视图层(响应)
      四大内置对象的setAttribute方法
      1. request.setAttribute(key , value)
      2. session.setAttribute(key , value)
      3. pageContext.setAttribute(key , value)
      4. application.setAttribute(key , value)
      5. 重定向url携带参数response.sendRedirect(“url?key=value”)
      6. response.getWrite().print(输出的内容)
      7. cookis:储存了一段字符串到本地浏览器上,通常用于令牌验证、记住用户名密码,cookie是携带在请求头中发送给后端的,方便参数的传递。但是,安全性无法保障保存的数据通常需要加密处理,而且数据存储量比较小只有4KB左右

cookie的定义及简单操作

  • 定义:Cookie是放在客户端也就是浏览器中的一段文本,用来记录一些字符串,cookie的储存格式是key→value;通常不支持中文(有的浏览器支持)。
  • cookie的简单操作
    • 设置cookie
      // 1.创建一个cookie对象
      Cookie cookie = new Cookie("key" , "value");
      // 2.设置过去时间 默认是-1 即会话结束后消失 单位是秒
      cookie.setMaxAge(3600);
      // 3.通过响应对象存储cookie
      response.addCookie(cookie);
      
    • 读取cookie
      // 读取cookie信息
      Cookie[] cookies = request.getCookies();
      if ( cookies != null ){
      	for( Cookie c : cookies ){
      		c.getName(); // 获取cookie名
      		c.getValue(); // 获取cookie值
      		c.getMaxAge();  // 获取过期时间
      	}
      }
      

面试题:session和cookie的区别和应用

  1. session和cookie都是为了存储某些关于用户的信息,不同的是cookie是存储的本地浏览器上,而session是存储在服务器上
  2. cookie 是服务器设置传递到浏览器上的(JS操作cookie暂不考虑),然后每次请求都会带上cookie,这样就可以表示是那一个用户发起的请求
  3. session是把信息存储到服务器上,浏览器第一次访问时把sessionID传递到浏览器,然后把sessionId保存大cookie中,每次访问吧session_id带上,服务就会根据请求来自哪个于用户,根据session_id来查询这个session里面的数据。
  4. cookie最典型的应用是:
    (一)判断用户是否记住密码,以便下次登录时能够直接登录。如果我们删除cookie,则每次登录必须从新填写登录的相关信息。
    (二):另一个重要的应用是“购物车”中类的处理和设计。用户可能在一段时间内在同一家网站的不同页面选择不同的商品,可以将这些信息都写入cookie,在最后付款时从cookie中提取这些信息,当然这里面有了安全和性能问题需要我们考虑了。
  5. session最典型的应用是:访问控制,访问某一些页面的时候判断是否已经登录。例如下载文件、进入购物车等等操作都必须用户事先登录的状态。

Filter(过滤器)

  • 定义:在Web应用中,如果对服务器端的多个资源(Servlet/JSP)有“通用”的处理,可以在每个资源中写相同的代码,而这样做显然过于冗余,修改时就需要逐一修改,效率低下;
    过滤器可以解决这样的问题:把通用的、相同的处理代码用过滤器实现,然后在web.xml中将过滤器配置给相关的资源使用即可;
    在这里插入图片描述
    JSP 和 Servlet 中的过滤器都是 Java 类。
    过滤器可以动态地拦截请求和响应,以变换或使用包含在请求或响应中的信息。

  • 目的:

    • 在客户端的请求访问后端资源之前,拦截这些请求。
    • 在服务器的响应发送回客户端之前,处理这些响应。
  • 实现方法:

    1. 自定义类实现Filter接口;
      在这里插入图片描述
    2. 重写doFilter方法
      在这里插入图片描述
    3. web.xml中设置过滤器对哪些请求有效:
      在这里插入图片描述

怎么控制多个Filter的顺序

方式1:如果是注解的方式,多个Filter的执行顺序可以通过Filter的文件名来控制,按照首字母排序(扩展)
方式2:xml配置的方式(从上往下)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值