gpt4 book ai didi

servlets - @WebFilter 不同类型的不同初始化参数

转载 作者:行者123 更新时间:2023-12-02 00:05:10 25 4
gpt4 key购买 nike

我正在将基于 Servlet 2.5 的 webapp 迁移到 Servlet 3.0,遇到了这个问题,我不知道如何将这些不同的过滤器映射压缩到一个 @WebFilter 注释中类。

过滤器:

<!-- Day is 12 hours, so if we update at night the new content will be fetched first     thing in the morning -->
<filter>
<filter-name>CacheForDay</filter-name>
<filter-class>x.web.client.filter.CacheHeaderFilter</filter-class>
<init-param>
<param-name>CacheTime</param-name>
<param-value>43200</param-value>
</init-param>
</filter>

<filter>
<filter-name>CacheForWeek</filter-name>
<filter-class>x.web.client.filter.CacheHeaderFilter</filter-class>
<init-param>
<param-name>CacheTime</param-name>
<param-value>604800</param-value>
</init-param>
</filter>

<filter>
<filter-name>CacheForMonth</filter-name>
<filter-class>x.web.client.filter.CacheHeaderFilter</filter-class>
<init-param>
<param-name>CacheTime</param-name>
<param-value>18144000</param-value>
</init-param>
</filter>

<filter>
<filter-name>noCache</filter-name>
<filter-class>x.web.client.filter.CacheHeaderFilter</filter-class>
<init-param>
<param-name>CacheTime</param-name>
<param-value>0</param-value>
</init-param>
</filter>

过滤器映射:

<filter-mapping>
<filter-name>CacheForDay</filter-name>
<url-pattern>*.png</url-pattern>
</filter-mapping>

<filter-mapping>
<filter-name>CacheForDay</filter-name>
<url-pattern>*.gif</url-pattern>
</filter-mapping>

<filter-mapping>
<filter-name>CacheForDay</filter-name>
<url-pattern>*.js</url-pattern>
</filter-mapping>

<filter-mapping>
<filter-name>CacheForDay</filter-name>
<url-pattern>*.css</url-pattern>
</filter-mapping>

<filter-mapping>
<filter-name>CacheForMonth</filter-name>
<url-pattern>*.ico</url-pattern>
</filter-mapping>

如何用 @WebFilter 替换它们?

最佳答案

@WebFilter注解的单个类是不可能的。您将不得不:

  • 继续使用 web.xml 方式;考虑到这种情况,这还不错。
  • 在基类中实现逻辑并编写简单的扩展,并使用适当的 @WebFilter 进行注释。我认为这看起来不太好。

后者的例子:

public class BaseCacheFilter implements Filter
{
public void doFilter(...) {
...implementation here...
}
....
}

@WebFilter(
urlPatterns={"*.png","*.gif",...},
initParams=@WebInitParam(name="CacheTime",value="43200")
)
public class CacheForDay extends BaseCacheFilter
{ /* EMPTY */ }

关于servlets - @WebFilter 不同类型的不同初始化参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18854126/

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