我想知道处理请求的顺序是什么,servlet(@WebServlet),filter(@WebFilter),阶段监听器等之间有什么区别。
这些方法具有非常相似的标题(doGet / doFiler)。
答案 0 :(得分:2)
此处描述了有关过滤然后由servlet处理的请求的处理:
http://download.oracle.com/docs/cd/B32110_01/web.1013/b28959/filters.htm
因此,您主要使用servlet来传递内容,并可能使用过滤器更改请求/响应。过滤器可用于实现管道和过滤器或装饰器设计模式。 (虽然他们也可以自己提供内容,但不要将委托转发给servlet进行最终处理。)
servlet请求处理非常多。 PhaseListeners是一个更高的抽象级概念。它们不属于servlet规范,而是属于servlet ontop的Java Server Faces Concepts。它们可用于跟踪JSF组件在请求期间经历的阶段,因此当您想要在请求期间影响JSF组件的行为/呈现时,它们是过滤器的替代方案。
可以在此处找到使用阶段侦听器的小例子: http://www.softwareengineeringsolutions.com/thoughts/frameworks/JSF.Techniques-PhaseListeners.htm