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

Jér*_*nge 14 java mapping servlets struts2 servlet-filters

作为探索/学习Struts2,JSP和Servlets的一部分,我从这里那里看到可以使用servlet和servlet-mapping web.xml.但是,Struts2也提到过滤器和过滤器映射web.xml.

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

澄清

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

Tom*_*icz 9

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


Coo*_*ans 7

过滤器像Servlet过滤器一样使用.例如,如果您需要对某些URL进行安全检查,则可以为这些页面添加过滤器.例如,您可以说/secure/pages/*.do需要被securityFilter拦截.然后,doFilter()SecurityFilter类(实现Filter接口的类)的方法将在将其转发到实际请求的servlet之前处理安全性审计.

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

它们不是相互排斥的.它们都可以同时使用.想想过滤器就像单词的意思一样 - 它在进行下一个servlet /动作之前"过滤"事物(日志记录,安全性等).