2010-11-02 61 views
2

所以我一步步去构建一个基本的Roo的应用在这里:http://static.springsource.org/spring-roo/reference/html/beginning.html为什么我的会话ID在我的网址?

,我开始了我的服务器,并开始与应用程序打,不由得注意到,有一个在我的网址一个“JSESSIONID”:

http://localhost:8080/pizzashop/pizzas;jsessionid=0A8EA5D9E8665C8AC80F141C3818F6BA?form

我根本不在乎这个!为什么它需要URL中的会话ID?我可以摆脱这个吗?在那里有这个似乎不是RESTful。

回答

2

这是标准的JavaEE行为,由servlet容器规定和控制。它与Spring无关。

请参阅this previous question了解为什么以及何时创建以及如何避免它。

+0

如何避免它没有禁用会话是[这里回答](http://stackoverflow.com/questions/1045668/jsessionid-is-occured-in-all-urls-which-are-generated-by-jstl -curl标签/ 4019476#4019476)。 – BalusC 2010-11-02 16:18:53

1

我在其他问题中没有看到这个答案,所以我想解释它。会话在java中的工作方式,我认为PHP,当客户端第一次来到它,它创建一个cookie,并附加JESSIONID到所有使用<c:url/>标记的网址。这样做的原因是因为第一次客户端访问该页面时,服务器不知道客户端是否支持cookie。所以它都有。下一次,因为它看到cookie,所以它实际上不会再使用URL,因为它知道cookie工作。

有很多方法可以禁用它。如果您根本不使用会话,则可以通过在context.xml中放入cookie = false来禁用cookie。这只会禁用会话的Cookie,而不是正常的Cookie。然后你可以使用urlrewrite来确定sessionid。

希望有所帮助。

0

您使用的是什么应用程序服务器?我知道Weblogic至少会在第一次调用时至少会执行URL编码会话以及基于cookie的会话,以查看客户端是否启用了cookie。如果它在下次调用中找不到与URL会话标识匹配的cookie,它将继续使用URL中的会话标记。我知道他们什么时候将我们的公司转换为使用Sharepoint进行网络爬取,并搜索那些长时间抱怨这个问题的windows web工作人员,直到他们终于明白,他们所要做的就是打开cookie会话支持。

相关问题