Session会话

session机制采用的是在服务器端保持HTTP状态信息的方案。
session创建过程:
当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否包含一个session标识(JSESSIONID)。
1).如果已经包含一个JSSEIONID则说明以前已经为此客户创建过session,服务器就按照JSESSIONID把这个session检索出来使用。
2).如果客户请求不包含JSESSIONID,则为此客户创建一个session并且生成一个与此session相关联的JSESSION,这个JSESSIONID将在本次响应中返回给客户端保存。
创建session会话的过程
session会话的机制
注:一个常见的错误是以为session在客户端访问时就被创建,然而事实是直到某server端程序调用HttpServletRequest.getSession(true)或者HttpServletRequest.getSession()这样的语句时才会被创建。
true代表创建Session
getSession():如果当前已经创建了session则这个用户直接返回这个session的对象,如果没有则创建一个新的。
session在下列情况下被删除:
A.程序调用HttpSession.invalidate()
B.距离上一次收到客户端发送的session id时间间隔超过了session的最大有效时间(tomcat服务器默认30分钟)
C.服务器进程被停止
注意:关闭浏览器只会使存储在客户端浏览器内存中的session cookie失效,不会使服务器端的session对象失效。
WEB服务器无法判断当前的客户端浏览器是否还会继续访问,也无法检测客户端浏览器是否关闭,所以,即使客户已经离开或关闭了浏览器,WEB服务器还要保留与之对应的HttpSession对象。
会话的超时间隔可以在web.xml文件中设置,其默认值由Servlet容器定义。

30

HttpSession接口中的方法;
getId方法
getCreationTime方法
getLastAccessedTime方法
setMaxInactiveInterval方法
getMaxInactiveInterval方法
isNew方法
invalidate方法
getServletContext方法
setAttribute方法
getAttribute方法
removeAttribute方法
getAttributeNames方法

HttpSession接口中的Session方法;
getSession方法
public HttpSession getSession(boolean create)
public HttpSession getSession()
isRequestedSessionIdValid方法
isRequestedSessionIdFromCookie方法
isRequestedSessionIdFromURL方法
表单的重复提交:
调用 RequestDispatcher.forward() 方法,浏览器所保留的URL 是先前的表单提交的 URL,此时点击”刷新”, 浏览器将再次提交用户先前输入的数据,引起重复提交。
如果采用 HttpServletResponse.sendRedirct() 方法将客户端重定向到成功页面,将不会出现重复一条问题。
包含有FORM表单的页面必须通过一个服务器程序动态产生,服务器程序为每次产生的页面中的FORM表单都分配一个唯一的随机标识号,并在FORM表单的一个隐藏字段中设置这个标识号,同时在当前用户的Session域中保存这个标识号。
当用户提交FORM表单时,负责接收这一请求的服务器程序比较FORM表单隐藏字段中的标识号与存储在当前用户的Session域中的标识号是否相同,如果相同则处理表单数据,处理完后清除当前用户的Session域中存储的标识号。在下列情况下,服务器程序将忽略提交的表单请求:
当前用户的Session中不存在表单标识号
用户提交的表单数据中没有标识号字段
存储在当前用户的Session域中的表单标识号与表单数据中的标识号不同
浏览器只有重新向WEB服务器请求包含FORM表单的页面时,服务器程序才又产生另外一个随机标识号,并将这个标识号保存在Session域中和作为新返回的FORM表单中的隐藏字段值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值