我是Java,Servlets和JSP的新手,并继承了我试图解决问题的应用程序。
我有一个JSP页面,它通过jsp:forward调用带有一些硬编码参数的tomcat servlet(Tomcat7)。这个JSP页面的目的是拥有一个简单,干净的链接,指向需要大量参数的Web资源。
servlet执行数据搜索并将结果绑定到会话,如果有超过10个项目,则可以通过后续Web请求进行分页。当使用servlet请求初始结果然后移动到后续页面时,这一切都正常。该网站使用cookie来管理会话。
以下是一个例子:
此作品 - 调用整页查询 http://cleanweb.co.nz/abode/getCategoryProducts.do?_siteId=7&_categoryId=1397&method=getCategoryProducts
然后跳转到结果的下一页(第2页)
这不起作用 - 调用JSP页面 (apache服务器使用重写将其转换为Full_Client_List.jsp) http://cleanweb.co.nz/Full_Client_List
然后跳转到结果的下一页(第2页)
如果我完全调用第一个请求(不是通过JSP页面),那么当我想查看后续页面时,servlet会记住结果
此设置适用于使用apache和tomcat(3.1)的旧服务器。通过将上述链接中的cleanweb.co.nz替换为202.191.38.129,可以看到这一点。
tomcat的开发有什么变化或我错过了哪些设置?
修改 我发现tomcat在路径中保存了带有上下文或应用程序名称的cookie,因此当导航到没有将其作为URL的一部分的页面时会话丢失。
解决方案(对我来说)是让tomcat将cookie路径设置为/。在我使用的版本中,通过将sessionCookiePath =“/”设置为tomcat server.xml配置文件中项目上下文标记的属性来完成