cookie
数据传递的方式
- JSP中数据传递的方向
- 视图层 → 控制层(请求)
- 表单提交数据
- url链接请求并携带数据
- ajax
- 控制层 → 视图层(响应)
四大内置对象的setAttribute方法- request.setAttribute(key , value)
- session.setAttribute(key , value)
- pageContext.setAttribute(key , value)
- application.setAttribute(key , value)
- 重定向url携带参数response.sendRedirect(“url?key=value”)
- response.getWrite().print(输出的内容)
- 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(); // 获取过期时间 } }
- 设置cookie
面试题:session和cookie的区别和应用
- session和cookie都是为了存储某些关于用户的信息,不同的是cookie是存储的本地浏览器上,而session是存储在服务器上
- cookie 是服务器设置传递到浏览器上的(JS操作cookie暂不考虑),然后每次请求都会带上cookie,这样就可以表示是那一个用户发起的请求
- session是把信息存储到服务器上,浏览器第一次访问时把sessionID传递到浏览器,然后把sessionId保存大cookie中,每次访问吧session_id带上,服务就会根据请求来自哪个于用户,根据session_id来查询这个session里面的数据。
- cookie最典型的应用是:
(一)判断用户是否记住密码,以便下次登录时能够直接登录。如果我们删除cookie,则每次登录必须从新填写登录的相关信息。
(二):另一个重要的应用是“购物车”中类的处理和设计。用户可能在一段时间内在同一家网站的不同页面选择不同的商品,可以将这些信息都写入cookie,在最后付款时从cookie中提取这些信息,当然这里面有了安全和性能问题需要我们考虑了。 - session最典型的应用是:访问控制,访问某一些页面的时候判断是否已经登录。例如下载文件、进入购物车等等操作都必须用户事先登录的状态。
Filter(过滤器)
-
定义:在Web应用中,如果对服务器端的多个资源(Servlet/JSP)有“通用”的处理,可以在每个资源中写相同的代码,而这样做显然过于冗余,修改时就需要逐一修改,效率低下;
过滤器可以解决这样的问题:把通用的、相同的处理代码用过滤器实现,然后在web.xml中将过滤器配置给相关的资源使用即可;
JSP 和 Servlet 中的过滤器都是 Java 类。
过滤器可以动态地拦截请求和响应,以变换或使用包含在请求或响应中的信息。 -
目的:
- 在客户端的请求访问后端资源之前,拦截这些请求。
- 在服务器的响应发送回客户端之前,处理这些响应。
-
实现方法:
- 自定义类实现Filter接口;
- 重写doFilter方法
- web.xml中设置过滤器对哪些请求有效:
- 自定义类实现Filter接口;
怎么控制多个Filter的顺序
方式1:如果是注解的方式,多个Filter的执行顺序可以通过Filter的文件名来控制,按照首字母排序(扩展)
方式2:xml配置的方式(从上往下)