http session

session与cookie

session一般指的类就是javax.servlet.http.HttpSession。HTTP协议本身是无状态的,cookie机制就是为了解决HTTP协议无状态的缺陷所做的努力,session(服务端)和cookie(客户端)是在客户端和服务器之间保持状态的解决方案。
cookie是通过扩展HTTP协议来实现的,服务器通过在HTTP的响应头中加上一行特殊的指示来提示浏览器生成相应的cookie。浏览器根据cookie的作用域(与请求资源的位置相比),选择是否发送该cookie。cookie的路径和域一起构成了cookie的作用范围;如果不设置过期时间,则cookie的生命周期是浏览器会话时间,只要关闭浏览器,cookie就消失了。

//HTTP响应头中设置cookie
Set-Cookie:....
session机制

服务器端为客户端请求创建session的过程:

(1) 首先检查请求终是否包含一个session id(
(2) 如果包含有session id,则在内存中找到该session。
(3) 如果不包含,则创建一个session。

使用cookie保存session id,cookie名字一般为JSESSIONID;如果cookie被禁止,URL重写,把session id 加在url的后面。

server端程序调用HttpServletRequest.getSession(true)时才被创建,如果JSP没有显式使用<%@page session=”false”%> 关闭session,则JSP文件在编译成Servlet时将会自动加上这样一条语句HttpSession session = HttpServletRequest.getSession(true)。访问*.html的静态资源不会被编译为servlet,没有session。

HttpSession  session=request.getSession(true);
//session是否为新建的
session.isNew();
//得到session id
session.getId()
//创建时间
session.getCreationTime();
//最后一次访问时间
session.getLastAccessTime();
//sessionId是否来自Cookie
request.isRequestedSessionIdFromCookie();
//sessionId是否来自URL重写
request.isRequestedSessionIdFromURL();

设置服务端的session的过期时间,tomcat的web.xml中

//单位为分钟
<session-config>
   <session-timeout>30</session-timeout>
</session-config>

session的访问没有路径问题,同一个webapp下都可以访问到。

session在下列情况下被删除:

1. 调用HttpSession.invalidate()
2. session 超时
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值