的的javadoc的javax.servlet.http.HttpServletResponse是什么之间的规则差异有点含糊encodeURL和encodeRedirectURL遵循,是否有什么确切的规则是什么例子?什么时候输出会encodeURL不同encodeRedirectURL?
举个具体的例子,我已经生成了一个我将使用的重定向网址response.sendRedirect(url).我得到了已经编码的url,但是我想为它添加一个参数,它的值是另一个url:
param2=http://google.com
Run Code Online (Sandbox Code Playgroud)
我用这两个函数中的哪一个来编码?
Ism*_*ush 15
Salam Alekom Abduallah,我寻找并寻找答案,我知道我会在stackoverflow或coderanch中找到它,在那里我找到了Charles Lyons的答案,我手里拿着这本书的作者,这是一个令人愉快的巧合.
2008年8月9日上午11:41正好 - 不同之处在于encodeURL总是将会话ID写入URL(如果需要,例如因为cookie被禁用),而encodeRedirectURL包含额外的逻辑来确定是否需要写会话ID in.例如,给外国网站提供会话ID是一个非常糟糕的主意,从那时起他们就可以冒充用户的会话了.因此,如果该URL位于当前Web应用程序中,则encodeRedirectURL将仅将jsessionid放在URL上,否则不执行任何重写.
Charles Lyons(SCJP 1.4,2003年4月; SCJP 5,2006年12月; SCWCD 1.4b,2004年4月)作者OCEJWCD研究伴侣Oracle考试1Z0-899(国际标准书号0955160340)
我也发现了之前发布的这个答案,
发表于2006年4月19日上午8:02报价发布给版主你好,
encodeURL用于编码用于在forward和include机制中进行会话跟踪的url.encodeRedirectURL对指定的URL进行编码,以便在sendRedirect方法中使用.
两者之间的主要区别在于,encodeRedirectURL方法的实现包括在将URL重定向到不需要或无效会话信息的不同上下文时确定是否需要在URL中编码会话ID的逻辑.如果启用了cookie,则encodeURL方法不会附加seesion id.除此之外,如果将URL重定向到不同的上下文(Web应用程序),则encodeRedirectURL不会附加会话信息.因为进行此确定的规则可能与用于决定是否编码普通链接的规则不同,所以此方法是来自encodeURL方法的separete.
希望这对你有所帮助.
谢谢
纳伦德拉·丹德
encodeURL()用于servlet输出中的所有URL.它可以帮助使用URL对会话ID进行编码.
encodeRedirectURL()仅与res.sendRedirect一起使用.它还用于使用URL编码会话ID,但仅在重定向时使用.