当用URL重写方式来管理Session的时候,通过以上两个方法把session ID写到URL中。不同点是:两个方法确定是否需要包含session ID的逻辑不同。在调用HttpServletResponse.sendRedirect前,应该先调用encodeRedirectURL()方法,否则可能会丢失Sesssion信息。

下面来自于参看J2EE帮助文档。

  • java.lang.String encodeRedirectURL(java.lang.String url),对sendRedirect方法使用的指定URL进行编码。如果不需要编码,就直接返回这个URL。 之所以提供这个附加的编码方法,是因为在redirect的情况下,决定是否对URL进行编码 的规则和一般情况有所不同。所给的URL必须是一个绝对URL。相对URL不能被接收,会抛 出一个IllegalArgumentException。所有提供给sendRedirect方法的URL都应通过 这个方法运行,这样才能确保会话跟踪能够在所有浏览器中正常运行。
  • java.lang.String encodeURL(java.lang.String url),对包含session ID的URL进行编码。如果不需要编码,就直接返回这个URL。Servlet引 擎必须提供URL编码方法,因为在有些情况下,我们将不得不重写URL,例如,在响应对应的 请求中包含一个有效的session,但是这个session不能被非URL的(例如cookie)的手 段来维持。所有提供给Servlet的URL都应通过这个方法运行,这样才能确保会话跟踪能够 在所有浏览器中正常运行。

实际上看完之后还是不怎么理解,等等学完会话控制再探讨。。。。

encodeURL() vs encodeRedirectURL()的更多相关文章

  1. Servlet/JSP-06 Session

    一. 概述 Session 指客户端(浏览器)与服务器端之间保持状态的解决方案,有时候也用来指这种解决方案的存储结构. 当服务器端程序要为客户端的请求创建一个 Session 时,会首先检查这个请求里 ...

  2. Servlet&jsp基础:第四部分

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  3. HeadFirst Jsp 06 (会话管理)

    现在我们希望能够跨多个请求保留客户特定的状态. 现在, 模型中的业务只是检查请求中的参数, 并返回一个响应(建议), 应用中没有谁记得在当前请求之前与这个客户之间发生过什么. 与一个客户的整个会话期间 ...

  4. 浏览器禁用Cookie,基于Cookie的会话跟踪机制失效的解决的方法

    当浏览器禁用Cookies时.基于Cookie的会话跟踪机制就会失效.解决的方法是利用URL重写机制跟踪用户会话. 在使用URL重写机制的时候须要注意.为了保证会话跟踪的正确性,全部的链接和重定向语句 ...

  5. Session笔记

    一.Session机制 session机制採用的是在server端保持 HTTP 状态信息的方案 . server使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息. 当程序须要为某个cli ...

  6. java_web学习(8)会话与状态管

    HTTP简介       WEB浏览器与WEB服务器之间的一问一答的交互过程必须遵循一定的规则,这个规则就是HTTP协议.HTTP是hypertext transfer protocol(超文本传输协 ...

  7. 分布式cookie-session的实现(spring-session)

    分布式cookie-session的实现(spring-session) 本文使用的spring-session版本为 1.0.0,地址为: https://github.com/spring-pro ...

  8. Java中的会话管理——HttpServlet,Cookies,URL Rewriting(译)

    参考谷歌翻译,关键字直接使用英文,原文地址:http://www.journaldev.com/1907/java-session-management-servlet-httpsession-url ...

  9. Java Web高级编程(二)

    使用会话维持状态 一.会话 为了实现关联同一个用户端的多个请求和这些请求之间数据的共享,需要用到会话,会话用于维持请求和请求之间的状态.从服务器的角度,当用户的Web浏览器打开第一个链接到服务器的套接 ...

随机推荐

  1. im消息丢失插件

    https://github.com/laughin/mocamsg mocamsg Moca message interceptor Openfire网络不好的情况下经常丢消息,一般情况都是服务器端 ...

  2. java 使用线程做一个简单的ATM存取款实例.(转)

    线程 Thread 类,和 Runable 接口 比较两者的特点和应用领域. 可以,直接继承线程Thread类.该方法编写简单,可以直接操作线程,适用于单重继承情况,因而不能在继承其他类 实现Runn ...

  3. Linux学习笔记总结--配置iptables防火墙

    将原有的iptables 文件保存一份 cp -p /etc/sysconfig/iptables /etc/sysconfig/iptables.bak 清空现有的规则 iptables -F ip ...

  4. gson使用详解

    昨天读一篇文章,看到gson这个词,一开始还以为作者写错了,问了度娘之后才发现是我才疏学浅,于是大概了解了一下gson用法,总体来说还是很简单的. Gson.jar下载 JavaBean转json / ...

  5. Base64原理简介

    Base64是一种编码方式,通常用于将二进制数据转换成可见字符的形式,该过程可逆. 过程大致如下: 1. 对64个可见字符,进行一个索引编码.索引是二进制的值,对应找到一个可见字符. Base64 编 ...

  6. 20、CSS

    CSS 层叠样式表(Cascading Style Sheets). 用于定义显示HTML样式. DIV和SPAN div是块级元素. span是行级元素. 将一些页面中的内容包裹起来统一设置样式. ...

  7. JDK1.8聚合操作

    在java8 JDK包含许多聚合操作(如平均值,总和,最小,最大,和计数),返回一个计算流stream的聚合结果.这些聚合操作被称为聚合操作.JDK除返回单个值的聚合操作外,还有很多聚合操作返回一个c ...

  8. Android 设计随便说说之简单实践(模块划分)

    上篇随笔随(Android 设计随便说说)便说了一下什么是设计以及设计的原则,这里举一个简单的例子来进一步的说Android设计.我们以应用商店的设计来举例. 在设计之前,需要把握两部分内容,才能使得 ...

  9. Android占位符

    <xliff:g>标签介绍: 属性id可以随便命名 属性值举例说明%n$ms:代表输出的是字符串,n代表是第几个参数,设置m的值可以在输出之前放置空格 %n$md:代表输出的是整数,n代表 ...

  10. CSS图片去色

    .imgFilter { filter: grayscale(100%); -webkit-filter: grayscale(100%); -moz-filter: grayscale(100%); ...