gpt4 book ai didi

java - 是否可以不将 servlet 过滤器投入使用?

转载 作者:行者123 更新时间:2023-11-30 04:08:26 25 4
gpt4 key购买 nike

基于java ee 5 api:如果 init 方法要么如下,则 Web 容器无法将过滤器投入使用1.抛出ServletException异常2.在Web容器定义的时间段内不返回

我所做的是当 init 方法中的任何部分工作失败时抛出 ServletException。然而,我观察到 Web 容器已启动,但所有请求都将返回 404 错误。有什么建议吗?

最佳答案

我相信这样做的逻辑是过滤器是处理请求的一个组成部分;如果一部分失败,则整个请求都会失败。因此,无法初始化的过滤器被认为无法提供服务,因此任何正常通过它的请求都将失败。

如果过滤器对于您的情况是可选的,那么我建议的逻辑如下(几乎是伪代码):

private boolean canServe = false;

public void init(FilterConfig fc) {
if( filter activation condition ) {
canServe = true;
}
}

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {
if( canServe ) {
// filter logic - filter is ON
}
else chain.doFilter(request, response); // filter is OFF
}

或者,如果可以在编译时配置过滤器可用性(例如基于环境 - DEV、STAGING、生产),则可以采用从 web.xml 中删除过滤器定义的条件构建(例如 Ant)。

关于java - 是否可以不将 servlet 过滤器投入使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20198136/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com