我读过处理过滤器的顺序可以通过web.xml中声明它们的顺序来确定
但是如何在没有web.xml的情况下执行此操作,例如使用@WebServlet注释? 我不想弄乱我的web.xml
答案 0 :(得分:7)
看起来注释过滤器是不可能的。 Servlet 3.0 Specification说:
如上所述,使用时 用于定义侦听器,servlet和过滤器的注释,它们的顺序 调用未指定。
答案 1 :(得分:2)
正如@axtavt所说,你不能这样做。这就是为什么(我认为)他们就是这样设计的。
要指定顺序,注释需要一个额外的参数(以某种方式)指定链中的位置;例如订单'。这有问题:
如果servlet有多个过滤器,其顺序由注释参数指定,那么程序员/部署者必须检查所有过滤器类的注释,以确定实际的顺序是什么。
理论上,给定的过滤器类可用于多个servlet,甚至多个webapp。每个servlet或webapp可能希望过滤顺序不同。您只能在过滤器类上使用注释来实现此目的。
如果需要部署Web应用程序来更改过滤器顺序,他/她将需要修改源代码,重新编译并重建WAR文件。
我想设计师会查看这些问题,并确定指定过滤顺序的最佳位置在web.xml文件中。