Cookie和Session

Cookie --> 客户端技术

Session--> 服务器技术

 

会话与状态管理

 

会话:指一个WEB客户端与WEB服务器之间连续发生的一系列请求和响应过程。

 

 

会话状态

 

1.有状态会话:

 

2.无状态会话:默认情况下,客户端与WEB服务器之间的访问是无状态的,也就是说,客户端访问了一次WEB服务器后端曾经访问过.,再去访问WEB服务器,WEB服务器不会知道这个客户.

 

 

 

WEB编程解决无状态会话的两种技术:

 

1.Cookie

 

 

Cookie是客户端技术,利用这个技术,服务器可以把与会话相关的数据以cookie的形式写给客户端,客户端再去问服务器中的其它WEB资源时,会带着这些cookie去.这些WEB资源就可以通过客户端带过来的数据,判断用户曾经干过什么事情.

 

 

2.Session

Seeion是服务器端技术,利用这个技术,服务器可以把与会话相关的数据写到一个代表会话的session对象中,客户端再去访问其它WEB资源时,这些WEB资源可以从session中取数据,以判断用户曾经干过什么事情.

 

 

 

 

Cookie API

 

javax.servlet.http.Cookie类用于创建一个Cookie,

response接口中定义了一个addCookie方法,它用于在其响应头中增加一个相应的的Set-Cookie方法,它用于在其响应头中增加一个相应的Set-Cookie头字段.同样,request接口中也定义了一个getCookies方法,它用于获取客户端提交的Cookie.

 

Cookie 类的方法:

 

setValue与getValue

 

setMaxAge与getMaxAge设置cookie的有效期

 

 

不设置有效期cookie是保存在内存中的

 

设置有效期cookie是保存在硬盘中的

 

setPath与getPath设置访问路径

 

SetDomain与getDomain

设置域(域名的域)

设置域后表明在访问特定网站时才会带着cookie

 

 

Cookie细节

 

1.一个Cookie能标识一种信息,它至少含一个标识该信息的名称(NAME)和设置值(VALUE).

 

2.一个WEB站点可以给一个WEB浏览器发关多个Cookie,一个WEB浏览器也可以存储多个WEB站点提供的Cookie.

 

3.浏览器一般只允许放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制为4KB.

 

4.当setMaxAge设置为0时则是令浏览器删除该cookie.

 

注意:删除cookie时,path必须一致,否则会删除.

 

 

 

 

Session

 

1.在WEB开发中,服务器可以为浏览器的每一个会话创建一个会话对象(session对象),在需要实现有状态的servlet程序中,可以把会自豪感数据写到这个对象中,以实现有状态的会话.

 

2.Session和Cookie的区别:

 

2.1.Cookie是某一个servlet把会话数据写会客户端,其它servlet通过客户端带过来的cookie获得数据.

 

2.2.Session技术是某一个servlet把数据写到一个session对象中,会话过程中的其它servlet通过共享的session对象获得数据.

 

3.Session对象由服务器创建,开发人员可以request对象的getSession方法得到session对象。

 

 

 

request.getSession();

不可以在IE8上试验

 

当关掉浏览器时浏览器的session会消失,但服务器端不会消息,但服务器端会在30分种后自动销毁session

 

 

共享session

 

转发和  重定向 都可以拿得到session

 

 

特例:当浏览器禁用session/cookie时

 

如果还要继续购买的方法

 

可以把session复制到URL地址上

 

解决方案:URL重写

1.response.encodeRedirectURL(java.lang.String url)

用于对sendRedirect方法后的url地址进行重写

 

2.response.encodeURL(java.lang.String url)

用于对表单action和超链接的url地址进行重写

 

 

防止客户的浏览器阻止了cookie和session  编程时 都要把URL重写

 

配置session超时时间

 

web.xml

<session-config>

<session-timeout>1(分钟)</session-timeout>

</session-config>

 

 

session失效

session-invalidate()手动销毁session。

你可能感兴趣的:(session,servlet,浏览器,服务器,url,web服务)