session(概念、session对象的获取、删除、验证)
# 1.session(会话)是什么?
服务器为了保存用户状态而创建的一个特殊的对象。
注:
当浏览器访问服务器时,服务器会创建一个session对象(该对象有一个唯一的id,一般称之为sessionId),接下来,服务器会将sessionId以cookie的方式发送给浏览器;
(相比cookie更安全,并且更具可辨识性,但是加大了空间和时间的消耗)
当浏览器再次访问服务器时,会将sessionId发送过来,服务器就可以利用sessionId找到对应的session对象。
# 2.如何获得session对象?
## (1)方式一
HttpSession s = request.getSession(boolean flag);
注:
flag为true时:(...)
先查看请求当中是否有sessionId,如果没有,则创建一个符合HttpSession接口要求的对象(即session对象);
如果有sessionId,则依据该sessionId查找对应的session对象,如果找到了,则返回该对象,如果找不到,则创建一个新的session对象。(可能有一个月没去kfc,服务器把它的内存清空了,但它有确实曾被分配过id,所以就创建一个对象)
flag为false时:(允许为空对象,只返回有的对象)
先查看请求当中是否有sessionId,如果没有,返回null;
如果有sessionId,则依据该sessionId查找
对应的session对象,如果找到了,则返回该对象,如果找不到,返回null。
## (2)方式二
HttpSession s = request.getSession();
等价于 request.getSession(true);
# 3.常用方法
String session.getId();//获得sessionId
session.setAttribute(String name,Object obj);//绑定数据 name绑定名 obj是绑定值
Object session.getAttribute(String name);//依据绑定名获得绑定值,若绑定值不存在,则返回null
session.removeAttribute(String name);//解除绑定
# 4.session超时
a.什么是session超时?
服务器会将空闲时间过长的session对象删除掉。
目的是为了节省内存空间。
b.缺省的超时时间,大部分服务器默认是30分钟。
c.可以修改超时时间长度。
比如,修改tomcat的web.xml文件
参看如下代码,通常不建议修改,但若修改的话,最好只是针对某一个具体的web应用
<session-config>
<session-timeout>30</session-timeout>
</session-config>
d.setMaxInactiveInterval(int seconds)
//两次请求的时间最大的时间间隔不能超过这个长度
设置两次请求之间的最大间隔时间,如果超过这个间隔时间,session对象会被删除。
# 5.删除session对象
session.invalidate();//无效的日期 要重新创建对象
# 6.session验证
##登录
用户填写用户名和密码并提交,服务器端依靠用户名和密码查询数据库,若有符合条件的记录,则登录成功,
返回一个欢迎页面;否则登录失败并给出提示。
step1.登录成功之后,在session对象上绑订相关数据。比如:
session.setAttribute("user",user);
//绑定session对象的名字和值
step2.当用户访问需要保护的资源(比如,访问用户列表),则进行session验证:
Object obj = session.getAttribute("user");
if(obj == null){
response.sendRedirect("login.jsp");
}
# 7.比较session和cookie
session相对于cookie,优点是存放更多的数据,
支持更丰富的数据类型,更安全;缺点是可能会占用过多的内存空间。
# 8.过滤器
## (1)过滤器是什么?
Servlet规范当中定义的一种特殊的组件,用来拦截Servlet容器的调用过程。
注:
当请求到达容器之后,如果有过滤器的话,容器会先调用过滤器。
## (2)如何写过滤器。
step1.写一个java类,实现Filter接口。
step2.在doFilter方法里面,编写相应的拦截处理逻辑。
step3.配置过滤器(web.xml)。
session(概念、session对象的获取、删除、验证)的更多相关文章
- session,cookie,sessionStorage,localStorage的相关设置以及获取删除
一.cookie 什么是 Cookie? "cookie 是存储于访问者的计算机中的变量.每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie.你可以使用 JavaScrip ...
- Struts2中获取Web元素request、session、application对象的四种方式
我们在学习web编程的时候,一般都是通过requet.session.application(servletcontext)进行一系列相关的操作,request.session.和applicatio ...
- (25)Django中操作cookie与session组件(添加cookie和删除cookie)
cookie是存在于客户端浏览器上的键值对,是明文的 cookie是当用户访问网站时候和数据提起携带过去,安全性比较差, 容易被拦截 session存在于服务端的键值对,是一串加密的字符串 当用户登陆 ...
- Laravel 5.1 中 Session 数据存储、访问、删除及一次性Session实例教程
1.Session的由来及其实现 HTTP协议是无状态的协议,同一个客户端的这次请求和上次请求是没有对应关系的.也就是说我们无法在服务器端确认两次请求是否是同一个用户所为,这为我们在一些应用场景中实现 ...
- Django之Cookie Session详解,CBV,FBV登陆验证装饰器和自定义分页
Cookie Session和自定义分页 cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接 ...
- Hibernate Session 4种对象状态
站在持久化的角度.Hibernate把对象分为4中状态. 临时状态. 持久化状态.游离状态.删除状态. 1:Save()方法: //这个是验证:1:save方法使临时对象------>变成持久化 ...
- Webform:Session、Cookie对象的用法
Session 优点:1.使用简单,不仅能传递简单数据类型,还能传递对象. 2.数据量大小是不限制的. 缺点:1.在Session变量存储大量的数据会消耗较多的服务器资源. 2.容易丢失. 使用方法 ...
- Struts2操作request、session和application对象
Struts 2提供了多种方式来访问上述的三种对象,归结起来,可以划分为两大类:与Servlet API解耦的访问方式和与Servlet API耦合的访问方式. 与Servlet API解耦的访问方式 ...
- .net core中的Session以及HttpContext对象使用小结
session用于识别用户并保持用户信息,就是一个会话 ,在浏览器不关闭的前提下,可以保存用户的信息,比如登录的保存用户信息从一个网页跳转到另一个网页,你的用户信息就可以用session. .net ...
随机推荐
- 接口,定义接口的关键字是 interface 实现接口关键字是 implements
当抽象类中的方法都是抽象的时候,这时可以将该抽象类用另一种形式定义和表示,就是接口interface特点:对于接口中常见的成员:而且这些成员都有固定的修饰符,不写就默认存在1:全局常量 : 都是 p ...
- 【Android】adb connect 手机的两种方式
adb支持两种连接Android系统的方式,USB方式及网络方式.一般android手机及android平板默认会设置为USB方式(直接插数据线的方式). 下边介绍两种方式的切换方式. 1. 背景知识 ...
- ngx_lua 模块详细讲解(基于openresty)
ngx_lua模块的原理: 1.每个worker(工作进程)创建一个Lua VM,worker内所有协程共享VM:2.将Nginx I/O原语封装后注入 Lua VM,允许Lua代码直接访问:3.每个 ...
- 微信小程序实现简单的树形图treeview
H5有很多树形图(树状图)的组件,echarts也有.比如像bootstrap的treeview,定制性很强.不过这些都无法方便地为小程序所用,除非整个页面用H5搭建再用webview框进去,有点粗暴 ...
- spring的面向切面实现的两种方式
面向切面:主要应用在日志记录方面.实现业务与日志记录分离开发. spring面向切面有两种实现方式:1.注解 2.xml配置. 1.注解实现如下: (1)配置如下: <?xml version= ...
- 【LeetCode每天一题】Combination Sum(组合和)
Given a set of candidate numbers (candidates) (without duplicates) and a target number (target), fin ...
- 2019.03.25 git
Git简介: Git是一个分布式版本控制软件. 背景故事: Linus在1991年创建了开源的Linux. 在2002年以前:世界各地的志愿者把源代码文件通过diff的方式发给Linus,然后Linu ...
- 带你零基础学习HTML5
1个HTML5基础入门教程,4个HTML5小项目教程,带你零基础入门学习HTML5. [HTML5基础入门] 教程将会介绍HTML5中的新特性,包括结构标签.新型表单标签.文件操作.Canvas.本地 ...
- git checkout .还可以恢复吗
说实话,希望很渺茫, 如果你在git checkout . 之前操作了git stash ,还是可以恢复的,操作如下: 最后修改文件恢复了! 但是如果你在git checkout .之前没有git ...
- RNN/LSTM/GRU/seq2seq公式推导
概括:RNN 适用于处理序列数据用于预测,但却受到短时记忆的制约.LSTM 和 GRU 采用门结构来克服短时记忆的影响.门结构可以调节流经序列链的信息流.LSTM 和 GRU 被广泛地应用到语音识别. ...