Au
是一个filter
框架,它是在servlet-filter
的基础上进行扩展,提供拦截器行为式的前置过滤与后置过滤,同时亦提供了对request
的多次读取,以及对response
的包装。
Au
的架构如下:
Au 环境依赖如下:
Au | Java | servlet-api |
---|---|---|
1.x | 1.8+ | javax.servlet-api:>=4.0.0 |
2.x | 1.8+ | jakarta.servlet-api:>=5.0.0 |
3.x | 17+ | jakarta.servlet-api:>=5.0.0 |
完整的使用案例可查看au-example
<dependency>
<groupId>com.lazycece.au</groupId>
<artifactId>au-core</artifactId>
<version>${au.core.version}</version>
</dependency>
定义filter
,并且实现AuFilter
:
public class SimpleAuFilter implements AuFilter {
@Override
public String name() {
return "simple-filter";
}
@Override
public boolean preHandle() throws Exception {
// pre handle
return true;
}
@Override
public void postHandle() throws Exception {
// post-handle
}
}
注入AuFilter
,同时可设置过滤器的相关策略:
AuManager auManager = AuManager.getInstance();
auManager.addAuFilter(SimpleAuFilter.class)
.excludePatterns("/a/b")
.includePatterns("/**")
.order(1);
auManager.setWrapper(true);
将AuServletFilter
注入到Servlet
中,下面以在jetty
中使用为例:
ServletContextHandler contextHandler = new ServletContextHandler();
contextHandler.setContextPath("/au");
server.setHandler(contextHandler);
contextHandler.addServlet(ExampleServlet.class, "/*");
contextHandler.addFilter(AuServletFilter.class, "/*", EnumSet.of(DispatcherType.REQUEST));