会话技术

来源:互联网 发布:贴片电容标称值算法 编辑:程序博客网 时间:2024/06/04 22:45

一、会话技术
1、什么是会话:客户打开浏览器访问一个网站,访问完毕之后,关闭浏览器。这个过程称之为一个会话。就如同打电话。
2、会话在编程中主要解决的问题是:保存各个用户的数据信息。
3、保存用户各自数据的主要技术:
客户端技术:Cookie
服务端技术:HttpSession
二、Cookie
1、获取Cookie采用request.getCookies()
2、设置Cookie采用response.addCookie(Cookie c)
3、cookie的属性
3.1maxAge:默认是浏览器的进程。也就是说不设置该属性,浏览器关闭后,cookie就被删除了。
也可以设置其存活时长,单位为妙
3.2path:默认是产生cookie的应用的访问路径。
如果设置了路径,只能被包含此路径的资源访问
假如设置路径为“/a”,也就是说,该cookie只能被da这个应用访问。
假如设置路径为“/b”(a的应用增加的cookie),该cookie只能被b访问,而a是访问不到的。
假如设置路径为“/”,该cookie可以被同一个服务器的所有应用访问。

三、Session
1、IE7及以下版本,新开窗口都会开启一次新会话
2、每个客户端都有各自的Session对象,以SessionId标识。
3、Session技术实际上是借助Cookie技术实现的。在创建session时,会将该Session的ID以cookie:JSESSIONID=sessionId的形式写给客户端。

//sessiion的方法<%    //SetAttribute()在会话范围中设置属性    request.setAttribute("a", "请求范围");    session.setAttribute("b", "会话范围"); %>    //get.Attribute() 从会话范围中获取属性<%= request.getAttribute("a") %><%= session.getAttribute("b")%>

4、Session默认情况下何时失效?
时间到了,默认是30分钟
更改Session的失效时间
修改web.xml文件,在根元素中增加

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

Session 的其他属性:(为了可以更好的显示清楚,在这里用表单的形式给大家展示出来)

<table>    <tr>        <td>新会话</td>        <td><%=session.isNew() %></td>    </tr>    <tr>        <td>会话id</td>        <td><%= session.getId() %></td>    </tr>        <tr>        <td>会话创建时间</td>        <td><%=session.getCreationTime() %></td>    </tr>    <tr>        <td>上次访问时间</td>        <td><%=session.getLastAccessedTime() %></td>    </tr>    <tr>        <td>当前系统时间</td>        <td><%=System.currentTimeMillis() %></td>    </tr>    <tr>        <td>会话闲置时间</td>        <td><%=System.currentTimeMillis()-session.getLastAccessedTime() %></td>    </tr>    <tr>        <td>会话失效</td>        <td><%= session.invalidate() %></td>    </tr></table>

5、客户端禁用了cookie怎么办?
解决办法:URL重写、使用隐藏域、使用session。
对于URL重写以下两个方法可以实现。要对该站多有的URL都要进行重写。
response.encodeRedirectURL(java.lang.String?url) :针对重定向的地址进行重写
response.encodeURL(java.lang.String?url):其他地址进行重写
(在老的浏览器中,用localhost访问网站,即使禁用了cookie,cookie还是有效的)

原创粉丝点击