`
xumingming64398966@yahoo.com.cn
  • 浏览: 41105 次
文章分类
社区版块
存档分类

Session, Cookie, Url重写与Wap

阅读更多

  本文的目的是搞清楚Session, Cookie, Url重写这些概念, 然后在这个基础上阐述如何利用

Url重写在Wap门户的开发中维护Session.<o:p></o:p>

<o:p> </o:p>

什么是Session, 什么是Cookie?<o:p></o:p>

<o:p>Session是由应用服务器维持的一个服务器端的存储空间,用户在连接服务器时,会由服务器生成一个唯一的SessionID,用该SessionID为标识符来存取服务器端的Session存储空间。而SessionID这一数据则是保存到客户端,用Cookie保存的,用户提交页面时,会将这一SessionID提交到服务器端,来存取Session数据。这一过程,是不用开发人员干预的。所以一旦客户端禁用Cookie,那么Session也会失效。</o:p>

<o:p>Cookie是客户端的存储空间,由浏览器来维持。<o:p></o:p><o:p></o:p></o:p>

<o:p> </o:p>

什么是Url重写?<o:p></o:p>

服务器也可以通过URL重写的方式来传递SessionID的值,因此不是完全依赖Cookie如果客户端Cookie禁用,则服务器可以自动通过重写URL的方式来保存Session的值,并且这个过程对程序员透明。<o:p></o:p>

可以试一下,即使不写Cookie,在使用request.getCookies();取出的Cookie数组的长度也是1,而这个Cookie的名字就是JSESSIONID,还有一个很长的二进制的字符串,是SessionID的值。

    实质上 URL 重写是通过向 URL 连接添加参数,并把 session ID 作为值包含在连接中。然而,为使这生效,你需要为你的 servlet 响应部分的每个连接添加 session ID. <o:p></o:p>

<o:p> </o:p>

<o:p> </o:p>

知道了Session, Cookie, Url的概念,那么下面的这个问题就不难回答了:<o:p></o:p>

 

Wap中如何进行Session管理?<o:p></o:p>

WapPC不同之处在与Wap1.x不支持SessionCookie,Wap2.0虽然支持但是只有协议支持还是不行,还要看手机终端支不支持?所以我们的解决方法就是完全不依赖Wap协议,完全不依赖手机终端,使用Url重写进行Session的维护,这个方法只与服务器端有关.<o:p></o:p>

<o:p> </o:p>

利用Url进行Session重写如何实现?

JSP实现
把 session ID 加到一个连接可以使用一对方法来简化:response.encodeURL() 使 URL
包含 session ID,如果你需要使用重定向,可以使用 response.encodeRedirectURL ()
来对 URL 进行编码。
 encodeURL () 及 encodeRedirectedURL () 方法首先判断 cookies 是否被浏览器支持;
如果支持,则参数 URL 被原样返回,session ID 将通过 cookies 来维持。

代码示例:
不使用Url重写:
<a href=http://wwww.myserver.com/servelet/user;userName=awaysrain>Link</a>

使用Url重写:
通过HttpServletResponse接口中的encodeURL()方法编码.
String myURL = response.encodeURL(http://wwww.myserver.com/servelet/user);
<a href= <%=myURL%> _fcksavedurl=" <%=myURL%>" _fcksavedurl=" <%=myURL%>" _fcksavedurl=" <%=myURL%>" >

JSTL实现
<c:url>可以为会话管理重写 URL
<a href="<c:url value='/content/sitemap.jsp'/>">View sitemap</a>

 

Struts实现:
struts配置文件中:
设置属性redirect, contextRelative

<forward name="listArticlesForBlog"
   path="/template/listArticlesForBlog.jsp"
   redirect="true" 
   contextRelative="true"/>

最后一个比较搞的问题:
那么在浏览器允许cookie的情况下,不要求浏览器关闭cookie的情况下使用
url重写如何实现?

http://tomcat.apache.org/tomcat-5.5-doc/config/context.html
Context支持cookies参数。  设置cookies="false",强制只从url解析sessionid。

cookies 
Set to true if you want cookies to be used for session identifierContext
communication if supported by the client (this is the default). Set to
false if you want to disable the use of cookies for session identifier
communication, and rely only on URL rewriting by the application.
<o:p></o:p>



分享到:
评论
1 楼 chyesi 2007-09-08  
[list=]

相关推荐

    flask-session-cookie-manager

    标题“flask-session-cookie-manager”指的是一个Python应用,它专门针对Flask框架,用于管理和操作session cookie。在Web开发中,session cookie是服务器用来跟踪用户状态的一种方式,特别是在无状态的HTTP协议上...

    session与cookie的区别和联系?

    ### Session与Cookie的区别和联系 #### 一、概念解析 - **Cookie**:Cookie是一种小型的数据文件,由服务器端生成并发送给用户浏览器,浏览器在本地(如用户的硬盘)保存该文件,然后每一次请求同一网站时都会把该...

    JAVA之cookie与session

    ### JAVA之cookie与session #### 一、Cookie与Session的概念 **Cookie** 与 **Session** 是两种在 Web 开发中用于跟踪用户会话的重要技术。它们的主要目标是在客户端和服务端之间保持状态。 - **Cookie** 机制...

    session 和cookie 区别

    标题与描述中的关键词“session和cookie区别”指向了两种在Web开发中常用的状态管理技术,它们各自具有独特的特性和用途。下面将详细阐述这两种技术的关键知识点: ### session和cookie的区别 **1. 定义与存储位置...

    flask、session、cookie解加密脚本

    在提供的`flask_session_cookie_manager3.py`和`flask_session_cookie_manager2.py`文件中,可能包含了实现这个过程的代码。这些脚本可能用来检查或调试`Flask`应用的`session`和`cookie`管理,或者用于演示如何手动...

    Session Cookie的HttpOnly和secure属性

    其次,GlassFish2.x支持的是servlet2.5,而servlet2.5不支持Session Cookie的"HttpOnly"属性。不过使用Filter做一定的处理可以简单的实现HttpOnly属性。GlashFish3.0(支持servlet3.0)默认开启Session Cookie的...

    session与cookie.doc的区别

    4. **依赖性**:Session依赖于Cookie,如果客户端禁用Cookie,服务器可以通过URL重写技术传递SessionID,但这样会对URL产生污染,用户体验可能下降。 5. **安全性**:由于Session数据存储在服务器,相对Cookie来说...

    Cookie、Session和Token三者的区别及使用

    ### Cookie、Session与Token的区别及使用详解 #### 一、Cookie **定义**: Cookie是一种用于在客户端保持状态的方案。简单来说,当你访问一个网站时,该网站可能会在你的计算机上留下一些信息(如用户名、密码等),...

    关于session与cookie的原理简述

    每个用户会有一个唯一的Session ID,这个ID通过Cookie或URL参数传递给服务器。 1. **启动Session** - PHP中通过`session_start()`开启Session。 - Session ID默认存储在名为`PHPSESSID`的Cookie中。 2. **存储和...

    session的实现方式

    它与第一种情况没有什么区别,但在 Cookie 禁用时,它会将 SessionID 的信息作为请求地址的一部分传到了服务器端,这就是 URL 重写的意义所在。 URL 重写可以使 Session 生效,即使客户端禁用了 Cookie,这样可以...

    Cookie,Session,Application的区别与应用

    ### Cookie、Session、Application 的区别与应用 在 ASP.NET 中,为了存储用户的状态信息或临时数据,开发人员经常使用多种内置的对象,例如 Application、Session、Cookie、ViewState 和 Cache 等。这些对象各有...

    JAVA URL重写

    - **测试URL重写的效果:** 在不同的环境下(如禁用Cookie)测试URL重写的实现效果,确保其能够正常工作。 #### 三、实验步骤详解 ##### 1. 环境搭建与工具准备 - **安装MyEclipse:** 下载并安装最新版本的...

    flask-session-cookie-manager-master.zip

    本项目“flask-session-cookie-manager-master.zip”显然是一款针对Flask Web框架的session管理工具,它专注于session的加密与解密。Flask是一个轻量级的Python Web服务器网关接口(WSGI)应用框架,广泛用于快速...

    session和cookie详解

    ### Session与Cookie详解 #### 一、Session与Cookie的基本概念 **Session** 和 **Cookie** 是Web开发中用于保持客户端与服务器之间会话状态的重要技术。由于HTTP协议本身是无状态的,即服务器无法自动记录客户端的...

    经典收藏Cookie和Session

    ### 经典收藏:Cookie与Session机制详解 #### 一、Cookie机制与Session机制的区别 在Web开发中,为了维持用户的会话状态,通常有两种常用的技术:Cookie与Session。这两种技术各有特点,适用于不同的场景。 - **...

    PHP基于memcahe的session方法重写

    本文将详细介绍如何基于memcache实现PHP的session方法重写。 首先,memcache是一个高性能的分布式的内存对象缓存系统,它可以用来存储包括session在内的各种数据,提高数据访问的速度。PHP中的memcache扩展允许我们...

    对session和cookie的一些理解

    每个用户会话在服务器上分配一个唯一的会话ID,这个ID通过Cookie或URL重写等方式发送给用户,然后用户每次请求时携带此ID,服务器根据ID找到对应会话的数据。Session在服务器端存储,因此占用资源更多,如果用户量大...

    一次搞明白 Session、Cookie、Token,面试问题全搞定.pdf

    标题中的"Session、Cookie、Token"是网络编程中重要的概念,它们与HTTP协议的状态管理、身份验证和安全有着紧密的联系。在Web开发中,这三者通常用于处理用户的会话和验证用户身份。面试官通常会询问这些概念的原理...

    购物车的四种做法(hidden、url重写、cookie、会话)

    这里我们将探讨四种常见的实现购物车功能的技术方法:隐藏表单(hidden)、URL重写、Cookie以及会话(Session)。 1. 隐藏表单(Hidden) 隐藏表单字段是HTML表单中的一种元素,它们对用户不可见,但可以在提交表单...

Global site tag (gtag.js) - Google Analytics