您的位置:首页 > Web前端 > JavaScript

jsp中会话跟踪的总结

2016-02-29 23:29 531 查看

自己总结一些会话跟踪的知识点,希望对大家有帮助!

 

1. 什么是会话跟踪

 

对同一个用户对服务器的连续的请求和接受响应的监视 

 

2.举例阐述四种会话跟踪技术的特点,应用场景

 

会话跟踪常用的方法: 

① URL重写:URL(统一资源定位符)是Web上特定页面的地址,URL重写的技术就是在URL结尾添加一个附加数据以标识该会话,把会话ID通过URL的信息传递过去,以便在服务器端进行识别不同的用户

 

url?参数名=值&参数名=值··········

 

例如:

<div class="menu_title">
<a href="oneArticle.jsp?id=<%=rs.getInt("id")%>">
<%=rs.getString("articletitle")%></a>
<%=rs.getString("articletime")%>
<a href="lanmu.jsp">
<%=rs.getString("menuname")%></a>
</div>

 rs.getInt("id")这是通过数据库查询出来的,这个ID它是标识了唯一一条用户资料的信息,并且将这个ID数据传给oneArticle.jsp这个jsp页面。

 

②隐藏表单域:将会话ID添加到HTML表单元素中提交到服务器,此表单元素并不在客户端显示

<form action="updateinfoChat.jsp" method="post">
<input type="hidden"name="userid"value="<%=userid%>"/>

帐号:<%=rs.getString("username") %><br/>
密码:<input type="password" name="userpwd" value="<%=rs.getString("userpwd")%>" /><br/>
确认密码:<input type="password" name="userpwd2"
4000
/><br/>
Email:<input type="text" name="email" value="<%=rs.getString("useremail")%>"/><br/>
电话:<input type="text" name="tel" value="<%=rs.getString("usertel")%>"/><br/>
个性签名:<input type="text" name="userdesc" value="<%=rs.getString("userdesc")%>"/><br/>
<input type="submit" value="确认修改"/>
</form>

 <input type="hidden"name="userid"value="<%=userid%>"/>

这个就是通过隐藏表单域来实现会话跟踪。

③ Cookie:Cookie是Web服务器发送给客户端的一小段信息,客户端请求时可以读取该信息发送到服务器端,进而进行用户的识别。对于客户端的每次请求,服务器都会将Cookie发送到客户端,在客户端可以进行保存,以便下次使用。
客户端可以采用两种方式来保存这个Cookie对象,一种方式是保存在客户端内存中,称为临时Cookie,浏览器关闭后这个Cookie对象将消失。另外一种方式是保存在客户机的磁盘上,称为永久Cookie。以后客户端只要访问该网站,就会将这个Cookie再次发送到服务器上,前提是这个Cookie在有效期内。这样就实现了对客户的跟踪。
Cookie是可以被禁止的。

//创建Cookie对象

Cookie cookieName = new Cookie("userName",userName);

cookieName.setMaxAge(60*60);

//将cookie对象响应给客户端

response.addCookie(cookieName);

      

//创建Cookie对象

Cookie cookiePwd = new Cookie("userPwd",userPwd);

cookiePwd.setMaxAge(60*60);

//将cookie对象响应给客户端

response.addCookie(cookiePwd); 

将用户的账号和密码存到cookie里面,组成一个cookie数组,通过cookie数组可以随时获得用户的账号和密码。

④ session: 
每一个用户都有一个不同的session,各个用户之间是不能共享的,是每个用户所独享的,在session中可以存放信息。 
在服务器端会创建一个session对象,产生一个sessionID来标识这个session对象,然后将这个sessionID放入到Cookie中发送到客户端,下一次访问时,sessionID会发送到服务器,在服务器端进行识别不同的用户
Session是依赖Cookie的,如果Cookie被禁用,那么session也将失效 

session.setAttribute("user", userName);

session.setAttribute("userid", userid);

将用户的账号和密码存到session对象里面,通过session对象随时可以获得用户的账号和密码。

3.cookie和session的共同之处在于:

cookie和session都是用来跟踪浏览器用户身份的会话方式

Cookie与Session的区别:

两个都可以用来存私密的东西,同样也都有有效期的说法,区别在于session是放在服务器上的,过期与否取决于服务期的设定,cookie是存在客户端的,过去与否可以在cookie生成的时候设置进去。

 

(1)cookie数据存放在客户的浏览器上,session数据放在服务器上
(2)cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,如果主要考虑到安全应当使用session
(3)session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,如果主要考虑到减轻服务器性能方面,应当使用COOKIE
(4)单个cookie在客户端的限制是3K,就是说一个站点在客户端存放的COOKIE不能超过3K。
(5)所以:将登陆信息等重要信息存放为SESSION;其他信息如果需要保留,可以放在COOKIE中

4.session对象的创建

HttpSession session=request.getSession(); 

HttpSession session=request.getSession(true); 

上面二种创建session的方法效果是一样的。首先获取传递进来的在Cookie中存放的sessionID,再根据sessionID查找session对象,如果没有找到将创建一个新的session对象,并保存到Cookie中发送到客户端。如果找到了,就将session对象赋予给引用


HttpSession session=request.getSession(false); 

 

如果不存在会话的时候不想创建新的会话

这种方式创建过程: 首先获取传递进来的在Cookie中存放的sessionID,再根据sessionID查找session对象,如果没有找到将返回null,如果找到了,就将session对象赋予给引用

5.访问与会话相关联的信息

HttpSession 对象存在于服务器上,他们并不在网络上传输,它们只是通过某种后台运作机制比如cookie或url重写自动与客户关联起来。Session对象拥有内建的数据结构散列表,存储任意数量的键与键值的对。

 

 

 

Session指的是服务器端为客户端所开辟的存储空间,在其中保存的信息就是用于保持状态

 

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: