2022-9-2第一组孙乃宇Cookie和Session
Cookie:客户端会话技术,将数据保存到客户端,以后每次请求都携带Cookie数据进行访问Cookie基本使用
发送Cookie
1.创建Cookie对象,设置数据
Cookie cookie=new Cookie("key","value");
2.发送Cookie到客户端:使用response对象
response.addCookie(cookie);
获取Cookie
1.获取客户端携带的所有Cookie,使用request对象
Cookie[] cookies = request.getCookies();
2.遍历数组,获取每一个Cookie对象: for
3.使用Cookie对象方法获取数据
cookie.getName();
cookie.getValue();
Cookie原理
Cookie的实现是基于HTTP协议的
响应头: set-cookie
请求头: cookie
Cookie使用细节
Cookie存活时间
默认情况下,Cookie存储在浏览器内存中,当浏览器关闭,内存释放,则Cookie被销毁
setMaxAge(int seconds):设置Cookie存活时间
1.正数:将Cookie写入浏览器所在电脑的硬盘,持久化存储。到时间自动删除
2.负数:默认值,Cookie在当前浏览器内存中,当浏览器关闭,则Cookie被销毁
3.零:删除对应Cookie
Cookie存储中文
Cookie不能直接存储中文
如需要存储,则需要进行转码:URL编码
编码:String value="张三";
value = URLEncoder.encode(value, "utf-8");
解码:value=URLDecoder.decode(value,"utf-8");
案例
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.util.Objects;
// 用当前这个servlet当做我的主页
Session
服务端会话跟踪技术:将数据保存到服务端
JavaEE提供 HttpSession接口,来实现一次会话的多次请求间数据共享功能
使用:
1.获取Session对象
HttpSession session = request.getSession();
2.Session对象功能:
void setAttribute(String name, Object o):存储数据到session域中
Object getAttribute(String name):根据key,获取值
void emoveAttribute(String name):根据key,删除该键值对
Session使用细节
Session钝化、活化:
服务器重启后,Session中的数据是否还在?
钝化:在服务器正常关闭后, Tomcat会自动将Session数据写入硬盘的文件中
活化:再次启动服务器后,从文件中加载数据到Session中
Seesion销毁:
默认情况下,无操作,30分钟自动销毁
<session-config>
<session-timeout>30</session-timeout>
</session-config>
调用Session对象的invalidate()方法
小结
Cookie和Session 都是来完成一次会话内多次请求间数据共享的 区别:
存储位置:Cookie是将数据存储在客户端,Session将数据存储在服务端
安全性:Cookie不安全,Session安全
数据大小: Cookie最大3KB,Session无大小限制
存储时间:Cookie可以长期存储,Session默认30分钟
服务器性能: Cookie不占服务器资源,Session占用服务器资源
Filter 过滤器
-
Filter 过滤器它是 JavaWeb 的三大组件之一。 三大组件分别是:Servlet 程序、Listener 监听器、Filter 过滤器
-
Filter 过滤器它是 JavaEE 的规范。也就是接口
-
Filter 过滤器它的作用是:拦截请求,过滤响应。
要求:在你的 web 工程下,有一个 admin 目录。这个 admin 目录下的所有资源(html 页面、jpg 图片、jsp 文件…等等)都必须是用户登录之后才允许访问。
思考:根据之前我们学过内容。我们知道,用户登录之后都会把用户登录的信息保存到 Session 域中。所以要检查用户是否登录,可以判断 Session 中否包含有用户登录的信息,即可!!!
初始化
import javax.servlet.*;
import java.io.IOException;
public class HelloFilter implements Filter {
/*
初始化
在创建Filter对象,在servlet容器(tomcat)加载当前web应用(当前工程)被调用
只执行一次。当前Filter的初始化操作,Filter和Servlet都是单例的。
FilterConfig类似于ServletConfig,获取初始化参数。
*/
监听器 listener
监听器: 专门用于对其他对象身上发生的事件或状态改变进行监听和相应的处理
分类: 1、监听域对象自身的创建和销毁
2、监听域对象中属性的增加和删除
3、监听绑定到session中的某个对象的状态的事件监听
JavaEE(servlet)三大件:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】