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

Base-Jsp-6-会话跟踪

2005-08-27 21:28 274 查看
Ø [/b]会话跟踪
[/b] Cookie:服务器在一个应答首部传递给浏览器的名称/值对。浏览器保存的时间 由cookie的过期时间属性来指定。 当浏览器向某个服务器发送一个请求时,它会检查其保存的cookie,并在请求 首部中包含从同一台服务器上接收到的所有cookie。 Session tracking:在浏览器和服务器之间不直接传送所有的状态信息,而只是传递表示 符(session ID)。浏览器发送sessionID,服务器跟踪与该会话相关联的所有信 息。传递sessionID可以通过cookie和URL复写技术,大部分容器都支持这 两种技术。 服务器无法分辨用户是否关闭了浏览器,因此关闭浏览器意味着与先前的会话 关联的所有会话数据都保留在服务器上,直到会话超时,服务器销毁会话对象。® 跟踪同一会话中的请求的会话ID可以有多种方法,主要有cookie和url复写。® URL复写:把会话ID编码在URL中。 例:counter.jjsp;jsessionnid=be8d697876787876befdbde898789098980这样,即使浏览器不支持cookie,也能够实现会话跟踪。® 对于URL复写,服务器从请求的URI中提取出会话ID,并把该请求与相应的会话关联起来,然后在访问会话数据的时候,JSP页面所进行的处理方式就和使用cookie跟踪会话id时所使用的方式完全相同。® 所以sesssion的实现要依靠cookie或URL复写技术。® 如果想为不支持cookie的浏览器提供会话跟踪,就必须使用<c:url>行为对应用程序中的 所有URL进行复写。 这意味着应用程序中的所有页面(至少是那些带有对其他页面引用的页面)都必须是 JSP页面,这样页面引用才能以动态方式进行编码,如果遗漏了一个ur,那么服务就会失去对会话的跟踪。
® <c:url value=”counter.jsp”>i) <c:url>会对URL进行复写,处理过程如下:如果容器在收到一个含有会话ID cookie的请求时,那么容器将不URL原封不动的添加到应答中。但对于不支持cookie或某个会话中的第一次请求,<c:url>将添加一个复写过的URL。ii) <c:url>还会对嵌套的<c:param>定义的查询参数进行URL编码。
<c: url value=”counter.jsp”> <c:param name=”name” value=”Hans Beergeten”/> </c:url> 处理后结果:counter.jjsp;jsessionnid=be8d697876787876befdbde898789098980 ?name=Hans+Beergeten 此处将name参数进行了URL编码 ® 如果确定不需要URL编码,可以将参数直接包含进URL,而不是通过<c:param>实现。如:<c:url value=” counter.jjsp;jsessionnid=be8d697876787876befdbde898789098980?name=Hans+Beergeten”/>注意:在通过<c:url>进行URL复写后,如果想通过<c:out>输入该URL,应保证esccapeXml属性false,即URL中的特殊字符应该保持原样,否则会进行两次URL编码,造成错误。例:<c: url var=curl”” value=”counter.jsp”> <c:param name=”name” value=”Hans Beergeten”/> </c:url><c:out value=”${curl}” escapeXml=”false”/>Ø 重定向和转发可以使用两种方法来调用另一个页面,重定向和转发。i) 转发:<jsp:forward page=”userInfo.jsp”/>转发,JSP容器将使用一个内部方法来调用目标页面,新的页面继续处理同一个请求,而浏览器不会知道这个过程涉及到了多个页面。浏览器URL会保持不变。ii) 重定向:<c:redirect url=”userInfo.jsp”/>重定向与转发不同,重定向时,第一个页面会通知浏览器发送一个新的目标页面的请求。浏览器所显示的URL会变成新页面的URL。重定向的速度比转发要慢,因为浏览器得发出一个新的请求。同时,由于重定向产生了一个新的请求,所以经过一次重定向之后请求作用域内的对象将无法再使用了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: