首先,我知道如果问session超时的问题,相信大家会对这个问题不屑一顾,所以加上了一个说明,呵呵。。。
为什么我会说这不是一个普通的超时问题呢,其实我也不太清楚,这是我在生产环境中发现的,大至情况我在这里详细描述一下
对于一般的WEB应用,我们通常都会通过session来保存操作者的一些相应信息,但为了安全起见,又不能让这个操作者在不退出系统的情况下面该登录一直有效,所以我们一般都会设置如果该操作者一个小时没操作,session就超时,下次操作时必须重新登录后才能操作。我在开发的时候也作了相关的超时处理,就是用过滤器来判断,这也是最省事的判断方式。在常规情况下面,这种方式都能正常实现。现在我就把我遇到情况写出来了,请大家注意,现在我是操作者,我的session超时了,但我发现本次提交却成功了,提交完以后跳到登录页面去了,但我一查写入数据库中的信息,发现是别人的登录信息,其它从操作页面获取的数据都是我提交的,唯独从session中取的数据是别人登录的,很惨很惨,后果很严重啊
这是什么原因引起的呢,我想了很久也想不出一个所以然出来,后来我在想,是不是因为我这个session刚好失效,在这同一时间,另一个用户登录,同时这个登录生成的session id 与我上次登录后失效的session id 刚好相同引起的呢?会不会存在这种可能性呢
如果是,我该怎么解决呢,如果不是,那这种情况产生的原因又是什么呢?期待有解决经验的高手拔刀相助。
我再来说一下我的session 应用过程,过程非常普通,也就是用户登录,通过request.getSession.setAttribute("admin")生成session,用户每次操作时都先经过filter判断该session有没有值,如果为空则跳到登录界面,如果有值则通过 request.getSession.getAttribute("admin")来获取该用户信息。
问题补充:
这是我filter的代码
public void doFilter(ServletRequest srequest, ServletResponse sresponse,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest httprequest = (HttpServletRequest) srequest;
HttpSession session = httprequest.getSession();
try {
ShopAdmin shopAdmin = (ShopAdmin) session.getAttribute("shopAdmin");
if (shopAdmin != null) {
chain.doFilter(srequest, sresponse);
}
else {
HttpServletResponse httpresponse = (HttpServletResponse) sresponse;
httpresponse.sendRedirect("/");
}
} catch (IOException e) {
e.printStackTrace();
} catch (ServletException e) {
e.printStackTrace();
}
}
用户提交处理的代理就是一个action,在action中获取session,并传递这个值去logic中做相应的处理,这个代码相信应该是没有问题的
分享到:
相关推荐
WebLogic 设置 Session 超时时间 WebLogic 是一个功能强大且流行的 Java 企业级应用服务器,支持多种方式来设置 Session 的超时时间。在本文中,我们将介绍如何在 WebLogic 中设置 Session 超时时间。 Method 1: ...
知识点一:session超时概念及设置 session超时是指用户在web系统中进行操作时,如果在一定的时间内没有任何操作,系统会自动认为用户已经离开,这时session(会话)会失效,用户下次进行操作时需要重新登录验证身份...
这里提到的主题是关于如何在AJAX请求中处理Session超时,并使用全局的方法进行跳转。下面我们将深入探讨这个话题。 首先,我们来看在过滤器中处理Session超时的代码片段。过滤器是Servlet技术中的一种机制,可以在...
接下来,我们来看如何实现"Session获取当前在线登录人"的功能: 1. **创建Session**:在用户验证身份成功后,服务器创建一个新的Session对象,并将用户信息(如用户名、用户ID等)存入Session。例如,在Java ...
6. **日志分析**:通过查看WebLogic的日志文件,寻找关于session丢失的异常信息,有助于定位问题。 7. **监控和调试**:使用WebLogic的管理工具进行监控,如WLST(WebLogic Scripting Tool)或JMX,以便实时查看...
接下来,我们看看Session的存储结构。每个Tomcat的**Context**(代表一个Web应用)都有一个**Manager**对象来管理其会话。Manager使用一个`ConcurrentHashMap`来存储Session对象,键是SessionId,值是Session对象...
首先,我们来看看标题所提及的"session 共享 tomcat-redis-session-manager"。Tomcat Redis Session Manager是专门为Apache Tomcat设计的一个插件,它的主要任务是将Tomcat的Session对象存储在Redis这种高可用的键值...
在Java Web开发中,用户登录超时过滤器是一种常见的安全机制,用于检查用户是否已登录并保持其会话状态。这个过滤器会在用户访问受保护的页面之前进行拦截,如果发现用户会话已经超时或者不存在,将重定向到登录页面...
3. **会话超时管理**:Zebra_Session支持自定义会话超时时间,可以根据需求设定用户无操作后多长时间自动结束会话,以节省服务器资源。 4. **跨域支持**:如果你的应用程序跨越多个域名,Zebra_Session可以处理这些...
在实际项目中,为了提高性能和可扩展性,我们还可能需要考虑其他优化策略,例如使用分布式Session存储或Application存储,以及合理地处理Session超时和并发问题。总之,理解和掌握Session与Application的使用是构建...
5. **会话超时和清理**:在Memcached中,你需要设定每个session的过期时间。同时,可以在后台定期执行任务,清除已过期的session。 6. **跨服务器共享**:当用户在多个服务器之间跳转时,由于session存储在...
标题中的“tomcat8 memcached session共享jar包”指的是在Tomcat 8中使用Memcached作为session共享存储的解决方案。Memcached是一种分布式内存缓存系统,常用于减轻数据库负载,提高应用性能。在Tomcat这样的Java...
通过以上配置,你的Tomcat应用就能利用Redis进行session共享,这不仅解决了在分布式环境下的session一致性问题,还降低了内存压力,因为session数据不再存储在每个Tomcat实例的内存中。同时,Redis的高可用性和可...
标题中的“tomcat8 做session共享所需jar包”指的是在使用Apache Tomcat 8作为Web服务器时,为了实现跨应用或者...在实际操作过程中,可能还需要根据具体需求调整配置,例如设置Session超时时间、优化连接池配置等。
首先,我们来看`Tomcat-Redis-Session-Manager`的核心功能:它将Tomcat默认的内存会话管理替换为基于Redis的分布式会话管理。这主要涉及两个关键组件:`RedisSessionManager`和`RedisSessionHandlerWrapper`。 `...
这可能是由于Session状态管理方式(InProc、StateServer、SQLServer)的选择、Session超时、IIS配置问题或是浏览器设置等引起。为了解决这些问题,需要检查以下几点: 1. 确保IIS中的ASP.NET State Service已启动,...
如果不通过tmux这些辅助工具来维持session的话,那么我们需要通过修改服务器的登出时间来防止自动登出。 修改步骤 首先我们看一下服务器上的自动登出时间是多少: $ echo $TMOUT 如果什么都没有输出,那么表示你的...
这里,`server`、`port`和`database`分别指定了Redis服务器的地址、端口和数据库编号,`maxInactiveInterval`设置了Session超时时间,`sessionName`则是Session ID的名称。 配置完成后,启动Tomcat集群,每个节点...
例如,对于Stateless Session Bean,可以在<session-bean>元素内添加<session-timeout>元素来指定超时时间(以分钟为单位)。 2. **异常处理**:当EJB方法超过预设的超时时,会抛出`javax.ejb....
8. 定期检查服务器日志文件,看是否有关于Session错误的信息。很多情况下,服务器日志可以提供异常处理和问题诊断的重要线索。 通过以上分析,我们可以了解ASP中Session无法保存问题的解决办法以及可能采取的措施。...