当前位置: 首页 > 知识库问答 >
问题:

将对象从Spring处理程序接收器传递到 Servlet 过滤器

东门理
2023-03-14

有一个webapp,其中每个请求都会消耗各种外部资源。webapp使用请求获取的bean跟踪那些消耗的资源。然后HandlerInterceptor的afterCompletion方法调用TaskExecutor将此信息存储在数据库中。一切都很好,但需要增加带宽消耗作为另一种资源。计算传出响应大小是servlet过滤器的一项典型任务(以及响应包装器和定制流实现)。因此,这项工作已经完成,并且正在发挥作用。

问题是我想把两件事汇总在一起。显然,我不能将“发送的字节数”传递给Spring HandlerInterceptor,因为filter的doFilter()还没有完成,拦截器运行时发送的字节数是未知的。因此,filter必须是聚集所有资源使用并启动异步任务以将其存储在DB中的地方。问题是:如何将数据从HandlerInterceptor传递给Filter。我尝试了简单的request.setAttribute(),但令人惊讶的是,它不起作用。

顺便提一下:我知道请求铲起的bean的生命周期,在处理程序中,我创建了一个简单的POJO,其中填充了铲起的bean的数据。

共有1个答案

缪嘉志
2023-03-14

这个问题原来相当琐碎。作为正常请求处理的一部分,该应用程序进行了大量的转发/调度。结果是调用了my过滤器(到目前为止,一切顺利),然后链中的另一个过滤器进行转发/分派,然后进行实际的请求处理。默认过滤器设置仅捕获普通请求,您需要额外的配置(web.xml)来过滤转发/调度。我就这么做了,解决了问题。

 类似资料:
  • 我正在为一个应用程序使用Apache骆驼和Spring启动。我需要从目录中读取,然后散集xml读取,然后处理未编组的对象以在其中设置更多数据,然后再次列表并将其发送到不同的文件夹。我使用以下路由。请告诉我在解组到处理器后如何发送POJO。目前默认情况下,它是进入处理器的交换。

  • 在新的SpringBoot(2.0.2)中,通过RabbitBinder在源/处理器/接收器之间发送哈希图的支持似乎有所改变。 公共父pom。所有模块的xml如下所示: 明确规定如下: 如果出站通道上没有设置内容类型属性,Spring Cloud Stream将使用基于Kryo序列化框架的序列化器序列化有效负载。在目标位置反序列化消息需要有效负载类出现在接收方的类路径上。 根据这些规则,它可以使用

  • 假设我有一个返回类型为ResultSet的方法。我能把这个对象传递给Servlet吗?我面对的是这个对象为null。 当我在一个Servlet中实例化这个类并调用这个方法时,它会收到一个空的ResultSet对象。我做错了什么?我们不能只从试块返回吗?

  • 我试图通过“网络在行动”这本书来掌握网络概念。 在我看来,有几个概念解释得不太好或太模糊。因此,我想我会来这里就这些话题做一些明确的解释。 渠道管道: 所以我有一个这样的渠道管道: 对于channelInitializer,从概念上讲,我会假设该过程将按以下顺序进行:

  • 我正在尝试将包含object的ArrayList从servlet传递到JSP。但是 Servlet文件: JSP文件:

  • 我正在尝试将某些值从servlet传递到JSP页面,并添加已传递到标记的值,阅读了许多文章,我得到了以下代码。 使用输入页面选择文件 验证上传的文件 调用上传。java将上传的文件保存在WEB-INF中 在上载的文件中,选定的文件保存为“我的”。txt 使用缓冲区读取文件内容并将其保存到变量 将其传递到JSP页面 上载JAVA 上传文件后, mypage.jsp 现在,当我点击上传按钮完成所有这些