Web框架应该是Filter还是Servlet?

Jer*_*emy 11 java servlets java-ee servlet-filters

让Web框架处理来自单个入口点的请求是一个已解决的问题.但是,单个入口点应该是Filter还是Servlet?为什么Web应用程序开发人员更喜欢一个?为什么框架开发人员更喜欢一个?

Bal*_*usC 10

让我们看看现有框架是如何做到的:

这是最受欢迎的框架.还有更多,但大多数都使用Servlet.

大多数(如果不是所有)servlet都应该映射到后缀URL模式,例如*.jsf(JSF),*.html(Spring),*.do(Struts)等.这使开发人员可以轻松地忽略不感兴趣的资源.因此,能够做到这一点的过滤器的优势消失了.只有Wicket过去需要在一个额外的路径上进行映射,/app/*并且在Wicket 1.3中将Servlet更改为Filter是唯一的参数,您可以将其映射到它上面/*.但是,这会添加额外的配置样板,以便能够忽略静态资源.我个人不明白为什么他们不只是使用后缀映射.

所有Web框架都依赖于HTTP请求.在Servlet中,它已经在标准方法中直接可用(通常只使用该service()方法).在过滤器中,您需要将其强制转换(尽管这不一定非常昂贵).

此外,Sun/Oracle基于以下理由在Filters和Servlet之间进行了明确的分离:当您想要在某些条件下过滤请求/响应时,请使用过滤器.如果要控制请求/响应和/或创建响应,请使用Servlet.

也可以看看:


归档时间:

查看次数:

2016 次

最近记录:

9 年,10 月 前