篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java web项目,登录后获取不到session,清缓存后再登录就能获取到,linux环境经常发生,请问是什么问题?相关的知识,希望对你有一定的参考价值。
你清除的是html文档的缓存,和session应该是没有关系的。
在浏览器里抓包看一下发出的请求头里的cookie,是否包含正确的JSESSIONID。追问我抓包看了下,返回的code是304,应该是缓存的问题,又在后台加了:
java.util.Date date = new java.util.Date();
response.setDateHeader("Last-Modified",date.getTime());
不知道可不可以解决!
追答304是ajax请求返回的吗?试试在URL后面加上随机数看看
追问问题解决了,加上
//请求和响应的信息都不应该被存储在对方的磁盘系统中;
resp.addHeader( "Cache-Control", "no-store");,
//于客户机的每次请求,代理服务器必须想服务器验证缓存是否过时;
resp.addHeader( "Cache-Control", "must-revalidate");
众所周知,当用户登录网站后较长一段时间没有与服务器进行交互,将会导致服务器上的用户会话数据(即session)被销毁。此时,当用户再次操作网页时,如果服务器进行了session校验,那么浏览器将会提醒用户session超时。
下面说一下如何解决用户登录后较长时间未操作而导致的session失效的问题?
一般情况下下,我们首先想到的是,通过改变服务器的配置,延长服务器的session超时时间。
在Tomcat服务器和项目的的web.xml文件中有如下节点内容:
<session-config>
<session-timeout>30</session-timeout>
</session-config>
这里的30表示session的超时时间,单位为分钟,如果用户登录后在30分钟内没有与服务器交互,那么当前用户的session将失效。我们可以配置一个更大的数值(比如60),就可以延长session的超时时间,如果将该值改为0或负数的话,则表示session永不失效。
以上是关于java web项目,登录后获取不到session,清缓存后再登录就能获取到,linux环境经常发生,请问是什么问题?的主要内容,如果未能解决你的问题,请参考以下文章