第一次
客户端第一次请求服务端时,服务端会产生一个session对象(用于保存客户的信息),并且每个session都有唯一的sessionId与之一一对应,来用于区分别的session。服务端会产生一个cookie,并且该cookie的name=JSESSIONID,value=服务端sessionId的值,然后服务端会在响应客户端的同时,将cookie发送给客户端,至此客户端就有一个JSESSIONID,因此客户端的cookie就和服务端的sessionId一一对应。
第二次
第二次或第n次请求时,服务端会先用客户端的cookie中的JSESSIONID,去服务端的session中匹配sessionId
session
- session是存储在服务端的
- session是在同一个客户时请求时共享
- 实现机制:第一次请求时,产生一个sessionID并复制给cookie的Jsessionid然后发给客户端。最终通过session的sessionID与cookie的jsessionid实现一一对应。
session方法:
String getId();获取sessionId
boolean isNew();判断是否是新用户
void invalidate();销毁,使session失效
void setAttribute();
Object getAttribute():
void setMaxIncativeInterval(秒):获取最大有效非活动时间
cookie和session的区别
cookie | session | |
---|---|---|
保存的位置 | 客户端 | 服务端 |
安全 | 较不安全 | 较安全 |
保存的内容 | String | object |
JSP 9大内置对象
pageContext JSP页面容器
request 请求对象
reponse 响应对象
session 会话对象
appliation 全局对象
{
getContextPath() 虚拟路径
getRealPath(String name):绝对路径 相对的绝对路径
}
config 配置对象
out 输出对象
exception 异常对象
page 当前JSP页面对象
cookie四种范围对象作用域
pageContext 当前页面有效
request 同一次请求有效,其他请求无效(请求转发后有效,重定向后无效)
session 同一次会话有效
application 整个项目运行期间有效,切换浏览器之后也可以
以上四个范围对象通过setAttribute进行赋值,通过getAttribute进行取值。
尽量使用范围小的