我试过了:
<c:url value="/web/pclub/userprofile" var="test">
<c:param name="userid" value="${user.id}"/>
</c:url>
${test}
但是当我检查禁用cookie的页面时,不附加jsessionid。 有谁知道为什么会这样?
答案 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" %>