Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring mvc Spring在定义的时间段后销毁临时对象_Spring Mvc - Fatal编程技术网

Spring mvc Spring在定义的时间段后销毁临时对象

Spring mvc Spring在定义的时间段后销毁临时对象,spring-mvc,Spring Mvc,我有一个SpringMVC表单,它使用kaptcha来证明用户是人而不是机器。输入请求的信息后,将生成一个随机值,该值必须在servlet上下文中可用120秒。用户可以将该值作为另一个应用程序加载项的密钥输入,以完成注册过程。这就是为什么随机值必须具有全局范围而不是会话范围的原因。如果在这120秒内没有其他应用程序收到任何请求,我想销毁这个随机字符串/对象。我在这里寻找最佳实践,即我能想到的一种方法是在Spring中实现,下面是一个示例 1创建一个集合,该集合可以容纳该随机值类型的多个对象 2将

我有一个SpringMVC表单,它使用kaptcha来证明用户是人而不是机器。输入请求的信息后,将生成一个随机值,该值必须在servlet上下文中可用120秒。用户可以将该值作为另一个应用程序加载项的密钥输入,以完成注册过程。这就是为什么随机值必须具有全局范围而不是会话范围的原因。如果在这120秒内没有其他应用程序收到任何请求,我想销毁这个随机字符串/对象。我在这里寻找最佳实践,即我能想到的一种方法是在Spring中实现,下面是一个示例

1创建一个集合,该集合可以容纳该随机值类型的多个对象

2将radom值保存在应用程序上下文中,而不是会话中

3定义具有全局会话范围的对象

4当请求传入时,获取HttpServletRequest提取用户发送的值

5迭代trouh-teh应用程序上下文,如果发现此类值,则继续进行,如果不立即结束该过程

现在,这在理论上可能会起作用,但是如果在定义的类型周期(即120秒)内没有请求对象,我如何确保在步骤1中生成的值在120秒后被销毁。我想确保内存已释放


在Spring中实现这种构造的最佳实践是什么。Shell我使用TaskScheduler还是其他什么?应用程序上下文中存储该随机值的最佳位置是什么?

这正是会话或数据库的用途。为什么要在任何会话中使用该共享值的servlet上下文,而不是简单地将随机值放入会话中,并在同一会话的下一个请求中进行比较?关键是我不能把它放在会话中,因为随机值应该从另一个应用程序发布,也就是说,它可能是另一个会话,另一台PC,因此我需要它在全局servlet上下文中,也就是说,它不应该是会话范围的值BART,这不应该像我之前提到的那样放在会话中,该值应该可以从任何会话中访问,我希望保存该随机值的对象在内存中,而不是数据库中,从而使事情更快一些