我试过了:

<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/

10-11 00:24