我的Java webapp中有一堆servlet上下文监听器,每个都收集一些有关环境的信息.
其中一些依赖于另一个听众收集的信息.但我无法确定监听器的注册和调用顺序,因此我必须重复代码.
我理解听众是按照他们在web.xml中的顺序注册的,但这对我来说听起来有些模糊,过于模糊,无法依赖它.
你有提示我如何解决我的问题吗?
所有servlet容器和Java EE容器都严格执行规范的这一部分.您可以依赖于按照您在web.xml中指定的顺序调用侦听器的事实.
您可以拥有一个Application LEVEL数据结构(HashMap),每个Filter/Listener在遇到请求数据时都会对其进行更新.这将让每个Listener只更新必要的内容.您可以将公共代码放在基本侦听器中,以便不存在代码重复.
为什么这模糊?web.xml中的排序非常具体地是它们被调用的顺序,它在Java EE规范中非常清楚地说明.依靠它完全可以.