C:url在禁用cookie时不附加jsessionid

时间:2011-01-13 19:09:22

标签: java jsp jstl

我试过了:

<c:url value="/web/pclub/userprofile" var="test">
    <c:param name="userid" value="${user.id}"/>
</c:url>
${test}

但是当我检查禁用cookie的页面时,不附加jsessionid。 有谁知道为什么会这样?

2 个答案:

答案 0 :(得分:3)

仅当在服务器端创建会话时禁用cookie 时才附加jsessionid(因此服务器端需要以某种方式通知客户端,对于哪个cookie将是默认方法)。如果没有创建会话,则无法附加jsessionid

尝试将以下行添加到JSP的顶部,至少在调用<c:url>行之前。它不仅为您打印/调试会话ID,而且如果尚未完成,它还会隐式创建会话。

${pageContext.session.id}

仅用于测试目的。如果它有效,那么问题的原因是没有会话的方法。保持原样。没有必要不必要地创建会话。对于会话和浏览器不支持cookie的情况,c:url将正常工作。


顺便说一句,要验证Cookie是否确实已停用,请按Firebug跟踪请求标头。如果请求中没有Cookie标头,即使服务器在响应中设置了Set-Cookie标头,则表示确实在客户端禁用了cookie。

答案 1 :(得分:0)

我认为BalusC是正确的,但是为了强制在服务器上创建会话,你可以在JSP的顶部添加一个指令页面,如下所示:

<%@ page session="true" %>