Javaweb学习笔记第十四弹---对于Cookie和Filter的学习
Apache Tomcat - Tomcat Native Downloads
会话追踪技术
会话:打开浏览器,建立连接,直到一方断开连接,会话才会结束;在一次会议中,可以有多次请求。
会话追踪:在多次请求间,共享数据
实现方式:
1、客户端会话跟踪技术----Cookie
2、服务端会话跟踪技术----Session
Cookie
将数据保存到客户端,以后每次请求都携带Cookie数据进行访问
基本使用
下面的网址,可以用来查找相关的插件代码,将其存储到pom.xml文件中
http://maven.apache.org/plugins/index.html
发送Cookie
1、创建Cookie对象,设置数据
Cookie cookie=new Cookie("username","zs");
2、发送Cookie到客户端,使用response对象
response.addCookie(cookie);
获取Cookie
1、获取客户端携带的所有Cookie,使用request对象
Cookie[] cookies=request.getCookies();
2、遍历数组,获取每一个Cookie对象:for
for(Cookie cookie:cookies){}
3、使用Cookie对象方法获取数据
String name=cookie.getName();
if("username".equals(name)){
cookie.getName();
cookie.getValue();
//输出
}
原理
Cookie的实现是基于**HTTP协议**的
响应头:set-cookie
请求头:cookie
Cookie存活时间:
默认情况下,Cookie存储在浏览器内存中,当浏览器关闭,内存释放,则Cookie被销毁
持久化:setMaxAge:设置存活时间(单位:秒s)
正数:倒计时结束,Cookie自动删除
负数:默认值,关闭即销毁
零:立刻删除Cookie
Cookie存储中文:
注意:Cookie不能存储中文(可以进行转码操作)
举例:
//编码
URLEncoder.encode(value,"UTF-8");
//解码
URLDecoder.decode(value,"UTF-8");
Session
基本使用
//文件一
1、获取Session对象
HttpSession session=request.getSession();
2、存储数据
session.setAttribute("username","zs");
//文件二
3、获取Session对象
HttpSession session=request.getSession();
4、获取数据(从文件一中获取数据)
Object username=session.getSession("username");
System.out.println(username);
原理
Session是基于Cookie实现的
一次会话的多次请求之间,对象都是同一个(多个请求,地址都是同一个)
使用细节
Session钝化、活化:
钝化:服务器正常关闭后,Tomcat会自动将Session数据写入硬盘的文件中
活化:再次启动服务器后,从文件中加载数据到Session中
注意:Session不能够长时间存储相应数据;在打开浏览器一次并进行关闭操作后,再次打开同一文件的浏览器,其地址会发生改变
Session销毁:
1、默认情况下,无操作,30分钟后自动销毁
若是使用Session-config标签表示存储时间,单位(分钟minute)
2、调用Session对象的invalidate()方法(直接进行销毁)
session.invalidate();
Filter(接口、过滤器)
作用:拦截请求,从而实现特殊功能
快速入门
1、实现接口,并重写所有方法
2、配置拦截资源的路径---@WebServlet("")
3、放行,chain.函数();
我个人觉得,Filter和Servlet的结构有很大的相似之处
执行流程
1、放行后访问对应资源,资源访问完成后,仍会回到Filter中
2、再之后,执行的是**放行后逻辑**
注意:放行前,是对request数据的处理;放行后,是对response数据的处理
使用细节
Filter拦截路径配置:四种
1、指定某个具体路径
2、指定某个目录下的路径
3、指定为某个后缀名的路径
4、指定为所有路径
也可以实现过滤器链
Javaweb学习笔记第十四弹---对于Cookie和Filter的学习的更多相关文章
- VSTO学习笔记(十四)Excel数据透视表与PowerPivot
原文:VSTO学习笔记(十四)Excel数据透视表与PowerPivot 近期公司内部在做一种通用查询报表,方便人力资源分析.统计数据.由于之前公司系统中有一个类似的查询使用Excel数据透视表完成的 ...
- Python学习笔记(十四)
Python学习笔记(十四): Json and Pickle模块 shelve模块 1. Json and Pickle模块 之前我们学习过用eval内置方法可以将一个字符串转成python对象,不 ...
- python3.4学习笔记(二十四) Python pycharm window安装redis MySQL-python相关方法
python3.4学习笔记(二十四) Python pycharm window安装redis MySQL-python相关方法window安装redis,下载Redis的压缩包https://git ...
- 如鹏网学习笔记(十四)ASP.NET
Asp.net笔记 一.Socket类 进行网络编程的类,可以在两台计算机之间进行网络通讯 过程: 向服务器发送指令: GET /index.html HTTP/1.1 Host:127.0.0.1: ...
- 《机器学习实战》学习笔记第十四章 —— 利用SVD简化数据
相关博客: 吴恩达机器学习笔记(八) —— 降维与主成分分析法(PCA) <机器学习实战>学习笔记第十三章 —— 利用PCA来简化数据 奇异值分解(SVD)原理与在降维中的应用 机器学习( ...
- Android学习笔记(十四)——自定义广播
//此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! 我们除了可以通过广播接收器来接收系统广播, 还可以在应用程序中发送自定义的广播.下面我们来分别试一试发送自定义 ...
- Dynamic CRM 2013学习笔记(十四)复制/克隆记录
经常有这样的需求,一个单据上有太多要填写的内容,有时还关联多个子单据,客户不想一个一个地填写,他们想从已有的单据上复制数据,克隆成一条新的记录.本文将介绍如何克隆一条记录,包括它的子单据以生成一条新的 ...
- JavaScript学习笔记(十四)——对象
在学习廖雪峰前辈的JavaScript教程中,遇到了一些需要注意的点,因此作为学习笔记列出来,提醒自己注意! 如果大家有需要,欢迎访问前辈的博客https://www.liaoxuefeng.com/ ...
- Java框架spring 学习笔记(十四):注解aop操作
回见Java框架spring Boot学习笔记(十三):aop实例操作,这里介绍注解aop操作 首先编写一个切入点HelloWorld.java package com.example.spring; ...
- Python学习笔记(十四):模块高级
以Mark Lutz著的<Python学习手册>为教程,每天花1个小时左右时间学习,争取两周完成. --- 写在前面的话 2013-7-23 21:30 学习笔记 1,包导入是把计算机上的 ...
随机推荐
- Java基础——数组的初始化与赋值、循环遍历,Random随机数[大于等于0,小于所给值)
package com.zhao.demo; public class Demo05 { //数组的静态初始化 /*public static void main(String[] args) { i ...
- 解决The following signatures couldn't be verified because the public key is not available: NO_PUBKEY FEEA9169307EA071 NO_PUBKEY 8B57C5C2836F4BEB
问题 yang@k8s-master:/etc/apt/sources.list.d$ sudo apt update Get:1 https://mirrors.aliyun.com/kuberne ...
- 《Unix/Linux系统编程》第十三章学习笔记 20201209戴骏
TCP/IP协议 从字面意义上讲,有人可能会认为 TCP/IP 是指 TCP 和 IP 两种协议.实际生活当中有时也确实就是指这两种协议.然而在很多情况下,它只是利用 IP 进行通信时所必须用到的协议 ...
- 渗透测试工具&导航合集
#前言 表哥们一般都有自己强大的工具库,今天我也稍作整理,分享交流出来一部分 #信息收集 ####dirbuster kali自带的一款工具,fuzz很方便 ####gorailgun 一款自动化做的 ...
- 给定两个字符串,均只包含英文字母,需区分大小写,一个是源字符串SS(长度<1000), 另一个是目标字符串TS(长度<1000),请问能否通过删除SS中的字符(不改变顺序)将它变换成TS,如果可以输出“YES",不可以则输出“NO"。 输入说明:第一行为源字符串SS,第二行为目标字符串TS。
import java.util.Scanner;/* 给定两个字符串,均只包含英文字母,需区分大小写,一个是源字符串SS(长度<1000), 另一个是目标字符串TS(长度<1 ...
- 修改mysql 一张表中某列字段值
UPDATE 表名 SET 字段名 = replace(字段名,'原来值','修改值'): 例: UPDATE pd_purchase SET type_status =replace(type_ ...
- centOS6设置网络
一.配置网络模式为桥接模式 1.点击"编辑"->"虚拟网络编辑器" 2.配置NAT 3.配置DHCP 二.进入centos系统设置网络 [root@loc ...
- 将本地文件复制到docker 容器中
查询容器id: docker ps 查询完整容器id docker inspect -f '{{.ID}}'短容器id cp docker cp 本地路径 完整容器ID:容器路径例: docker c ...
- Spring面试题大汇总
1.Spring的IOC和AOP机制? 我们在使用spring框架其实就是为了实现IOC,依赖注入,和AOP,面向切面编程,主要有两种设计模式工厂模式和代理模式,IOC就是典型的工厂模式,通过sess ...
- uniapp 微信小程序 使用 echarts 避坑
echarts.min.js的版本 5.3.2 第一步 : https://blog.csdn.net/qq_45164516/article/details/125298373 第二步: 重中之重修 ...