路由前如何在 Play 1.2.x 中调用 servlet 过滤器

Posted

技术标签:

【中文标题】路由前如何在 Play 1.2.x 中调用 servlet 过滤器【英文标题】:How to invoke servlet filter in Play 1.2.x before routing 【发布时间】:2019-03-12 02:18:49 【问题描述】:

总体:

我的问题是关于添加 Servlet Filter to Play 框架项目以在路由之前调用。

版本:

Java 7 播放 1.2.6

更多信息:

我尝试使用 @Before 标记播放拦截器,它可以工作。我更喜欢在路由之前使用 servlet 过滤器。

问题:

即使在路由之前或之后,也根本不会调用过滤器。能否请您与我分享您的真正解决方案,看看是否可以在 Play 框架中使用 Servlet 过滤器

【问题讨论】:

【参考方案1】:

AFAIK Play 1.x 中没有 servlet 拦截器 您可以使用 @Before 注释来解决您的一些问题。但是 @Before 并不是拦截器的完全合格替代品。 手动(有点低级别)的方法可以添加你的拦截器来播放管道。 Play 有一个配置play.netty.pipeline,默认为:

#play.netty.pipeline = play.server.FlashPolicyHandler,org.jboss.netty.handler.codec.http.HttpRequestDecoder,play.server.StreamChunkAggregator,org.jboss.netty.handler.codec.http.HttpResponseEncoder,org.jboss.netty.handler.stream.ChunkedWriteHandler,play.server.PlayHandler

您可以修改管道并在列表中的最后一个元素 (play.server.PlayHandler) 之前添加自定义处理程序。

【讨论】:

以上是关于路由前如何在 Play 1.2.x 中调用 servlet 过滤器的主要内容,如果未能解决你的问题,请参考以下文章

在 Play Framework 1.2.x 中,如何在路径表达式中使用渲染参数值?

Play 1.2.x 中的命令脚本

如何将参数传递给 Play 中的 Jobs!框架 1.2.x?

Play Framework [2.4.x] 如何在子模块的路由文件中处理公共资产

如何关闭 Play! 的 javascript 反向路由生成?

play框架使用起来