如何定义RequestMapping优先级
我遇到以下情况RequestMapping
:
@RequestMapping(value={"/{section}"})...method implementation here...
@RequestMapping(value={"/support"})
...method implementation here...
有明显的冲突。我希望Spring可以自动解决此问题,并映射/support
到第二种方法,其他所有内容都映射/support
到第一种方法,但改为映射到第一种方法。
我怎么能告诉Spring允许一个明确的RequestMapping
覆盖一个RequestMapping
与PathVariable
在同一个地方?
如果/support
映射先于/{section}
映射,则似乎可以使用。不幸的是,我们有数十个控制器,其中包含许多方法RequestMapping
。如何确保带有/{section}
映射的控制器最后被初始化?还是预拦截器是必经之路?
这是简化的,我知道RequestMapping
单独拥有这两个没有多大意义)
回答:
使用Spring可以扩展org.springframework.web.HttpRequestHandler以支持您的方案。
实现方法:
@Overridepublic void handleRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}
使用它来分析传入的请求,确定请求url是否是请求url的特殊子集的一部分,然后转发到适当的位置。
例如:
@Overridepublic void handleRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
/** You will want to check your array of values and have this data cached **/
if (urlPath.contains("/sectionName")) {
RequestDispatcher requestDispatcher = request.getRequestDispatcher("sections" + "/" + urlPath);
requestDispatcher.forward(request, response);
}
}
并设置您的部分,例如:
@RequestMapping(value={"/sections/{sectionName}"})
这不会干扰您之前存在的任何控制器映射。
以上是 如何定义RequestMapping优先级 的全部内容, 来源链接: utcz.com/qa/425485.html