servlet/servlet-mapping 和 filter/filter-mapping 之间的区别?

作为探索/学习 Struts2、JSP 和 Servlets 的一部分,我从这里那里看到了这一点,并且可以在 .但是,Struts2提到并且也适用于.servletsservlets-mappingweb.xmlfiltersfilter-mappingweb.xml

两者之间有什么区别?这些是相互排斥的吗?我应该何时使用哪个以及为什么?有人可以澄清这些概念吗?谢谢。

澄清

我只是明白,我需要了解Struts2和Servlets是如何相关的:http://www.coderanch.com/t/57899/Struts/Difference-between-servlet-struts


答案 1

Servlet 过滤器实现了拦截过滤器模式。虽然 servlet 是 Web 请求的最终目标,但每个请求都要经过一系列过滤器。每个过滤器都可以在进一步传递请求之前修改请求,或者在从 servlet 接收回请求后进行响应。它甚至可以避免进一步传递请求,并像servlet一样完全处理它(并不罕见)。例如,缓存过滤器可以在不调用实际 servlet 的情况下返回结果。


答案 2

过滤器的使用方式与 Servlet Filters 类似。例如,如果您需要对某些 URL 进行安全检查,则可以为这些页面添加筛选器。例如,你可以说需要被安全过滤器拦截。然后,SecurityFilter 类(实现 Filter 接口的类)的方法将处理安全审计,然后再将其转发到实际的请求 Servlet。/secure/pages/*.dodoFilter()

Servlets几乎是标准的东西。定义一个 servlet,然后让 servlet 容器知道需要将哪种类型的请求映射到该 servlet。

它们并不相互排斥。它们都可以同时使用。把过滤器想象成这个词的意思 - 它在进入下一个servlet/action之前“过滤”事物(日志记录,安全性等)。


推荐