【发布时间】:2014-02-12 11:17:22
【问题描述】:
想象一下,有一天您会遇到两个 servlet 过滤器,一个像这样扩展另一个:
public class MainFilter implements Filter{
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain){
.... some stuff ...
chain.doFilter(request, response);
}
}
public class FilterExtended extends MainFilter{
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain){
// Is the following code mentally ok?
if(some business condition){
{
super.doFilter(request, response, chain); // we call MainFilter.doFilter(), which as a consequence calls chain.doFilter()
return;
}
chain.doFilter(request, response); // let the request pass through
}
}
我的问题是,考虑像这样继承 servlet 过滤器是否是一种好习惯。我无法在互联网上找到有关此的任何信息。
我个人认为过滤器不应该在一些可怕的类层次结构中,它们应该分开(这更容易让我的大脑掌握并且更容易看到 web.xml 中附加的过滤器),但我想在进行任何代码更改之前了解其他一些意见。
【问题讨论】:
-
征求意见的风险是你得到很长的答案,无论如何也不能真正解决你的问题。请考虑改写您的问题,使其更具体。另外,请分享您自己的优缺点。
-
为什么你认为过滤器的继承是错误的?他们是普通班。一点魔法都没有。您唯一应该确保的是如何处理来自父类的配置注释。但是在上面的示例中,您没有通过注释使用配置。
标签: java jakarta-ee inheritance servlet-filters