This week's book giveaway is in the OCAJP 8 forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori on-line! See this thread for details.
Filter mappings dont work like servlet mappings in that there is no order of preference for matches. The no1 is recipes/* and that is a match. Thats all it cares about. It is earlier in the DD and hence it is earlier in the filter invocation order.
I really did understand your explanation. So as per what you said, first url-pattern is matched and the filters invoked in the order in which they are configured in the DD. Then it looks for filter-name that matches the url pattern and it invokes them as well in the order in which they are configured in the DD.