我试过了:
<c:url value="/web/pclub/userprofile" var="test">
<c:param name="userid" value="${user.id}"/>
</c:url>
${test}
但是,当我检查禁用 cookie 的页面时,不会附加 jsessionid。
有谁知道为什么会这样?
最佳答案
jsessionid
仅在服务器端创建 session 时禁用 和 cookie 时附加(因此服务器端需要以某种方式通知客户端,cookie 将是默认方法)。如果没有创建 session ,那么附加 jsessionid
就没有意义了。
尝试将以下行添加到 JSP 的顶部,至少在调用 <c:url>
行之前。它不仅会为您打印/调试 session ID,还会在尚未完成的情况下隐式创建 session 。
${pageContext.session.id}
这样做仅用于测试目的。如果它有效,那么问题的原因是没有 session 方法。保持原样。无需不必要地创建 session 。对于这种情况,只要有作为 session 并且浏览器不支持 cookie,
c:url
就可以正常工作。顺便说一下,要验证 cookie 是否确实被禁用,请通过 Firebug 跟踪请求 header 。如果即使服务器在响应中设置了
Cookie
header ,请求中也没有 Set-Cookie
header ,则意味着确实在客户端禁用了 cookie。关于java - :url not appending jsessionid when cookies are disabled,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4684165/