框架是SpringMVC+Spring-security+freemarker
错误分析:正常来说,session失效的时候服务器后台会将失效的sessionId发送给前端的浏览器并作为cookie存储起来,这样cookie也会马上失效。但是发生以上的问题
经过日志跟踪发现session失效的时候,产生了一个未知的cookie,这个cookie并不是由服务器端传到浏览器的,这样就导致session失效了,但是点击失效链接产生的cookie却不生效,只有清除浏览器缓存或者关闭浏览器才会失效,所以导致了如标题所述的问题。
解决方法:在web.xml中我配置的servlet-mapping为:
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/ps-admin-nimitz/*</url-pattern><!-- 注意这里就是URL拦截配置 -->
</servlet-mapping>
由于我的一级菜单比较多,所以我的URL并不是直接用 /ps-admin-nimitz/hello.do,而是在ps-admin-nimitz和hello.do之间加了一个一级菜单的名称,例如 /ps-admin-nimitz/consumer/hello.do,经过验证就是由于加了这个consumer导致了以上的问题,所以去掉consumer即可。