如何在 Ratpack 处理程序中获取 Servlet 过滤器 (before/after) 行为?
How to get Servlet Filter (before/after) behavior in Ratpack Handler?
我有一个 Servlet 过滤器,它在过滤器链之前和之后执行操作,例如:
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain){
// I do some stuff here...
chain.doFilter(req, res);
// ... and then I do some more stuff here.
}
我正在将其转换为 Ratpack 应用程序,并且已经弄清楚如何将处理程序用作过滤器(通常)
class MyHandler implements Handler {
void handle(Context ctx){
// so some stuff...
context.next()
}
}
但对 next()
的调用是非阻塞的,因此后续操作会立即执行,而不是在其他处理程序执行后执行。
我如何在 Ratpack 中的代码行为之前和之后得到这个?
根据您的 "after" 逻辑在做什么以及您是否已经在 "after" 逻辑之前呈现响应,您可以使用 context.onClose()
class MyHandler implements Handler {
void handle(Context ctx){
// so some stuff...
context.onClose(requestOutcome -> {
// do some more stuff...
})
context.next()
}
}
我有一个 Servlet 过滤器,它在过滤器链之前和之后执行操作,例如:
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain){
// I do some stuff here...
chain.doFilter(req, res);
// ... and then I do some more stuff here.
}
我正在将其转换为 Ratpack 应用程序,并且已经弄清楚如何将处理程序用作过滤器(通常)
class MyHandler implements Handler {
void handle(Context ctx){
// so some stuff...
context.next()
}
}
但对 next()
的调用是非阻塞的,因此后续操作会立即执行,而不是在其他处理程序执行后执行。
我如何在 Ratpack 中的代码行为之前和之后得到这个?
根据您的 "after" 逻辑在做什么以及您是否已经在 "after" 逻辑之前呈现响应,您可以使用 context.onClose()
class MyHandler implements Handler {
void handle(Context ctx){
// so some stuff...
context.onClose(requestOutcome -> {
// do some more stuff...
})
context.next()
}
}