java将URL映射到最特定的上下文根
我有以下情况:
我希望将传入的查询(我使用servlet过滤器访问查询)映射到合适的应用程序。为此,我有一个表,将应用程序映射到它们的contextroots,例如:
/application1/ | Application1 Rootcontext
/application1/subcontext1 | Application1 Subcontext 1
/application1/subcontext2 | Application1 Subcontext 2
/application2/ | Application2
因此,当我有一个路径为/application1/Subcontext 1/someotherpath的查询时,我想得到application1 Subcontext 1,当我有一个查询URL/application1/sompath时,我想得到application1 Rootcontext
我的第一个猜测是,我用contextroots的映射构建了某种树(该URL的每个部分都作为一个节点),然后拆分查询URL并沿着树走,以获得最具体的应用程序映射
这是最好的解决办法,还是你对我的问题还有其他建议
# 1 楼答案
你可以将地图作为
Map<String, ApplicationContext>
并向后走,直到找到第一个非空匹配,而不是一棵树并向前走。这段代码应该让您大致了解如何做到这一点:还有一个fiddle