对于Java EE Web应用程序,我有一个实现ServletRequestListener的监听器和一个过滤器。
有没有办法在 web.xml 指定应该在侦听器之前调用过滤器?
我已经尝试在侦听器之前声明过滤器及其映射,但侦听器仍然在之前被执行。
知道吗?
<filter>
<filter-name>myfilter</filter-name>
<filter-class>com.example.MyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>myfilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>com.example.MyServletRequestListener </listener-class>
</listener>
当浏览器(客户端)向服务器发出请求时,像(Tomcat)这样的容器为客户端请求HttpServletRequest和响应对象HttpServletResponse创建请求对象和如果您配置了任何实现"ServletRequestListener"的侦听器,则"public void requestInitialized(ServletRequestEvent sre)"方法将调用
通过容器创建请求和响应对象后,如果请求有任何侦听器,则侦听器将首先执行.....
之后,HttpServletRequest 和 HttpServletResponse 被分配给填充器,如果你已经配置了填充器。
意味着侦听器首先出现在 ServletRequest 的图片中。因此,无法配置以使填充器在 ServletRequest 情况下的侦听器之前执行....
ServletRequestListener.requestInitialized()
将在调用任何筛选器之前初始化,并在所有筛选器和服务方法返回后ServletRequestListener.requestDestroyed()
。