使用Spring @RequestMapping获取通配符子域

时间:2017-01-16 00:35:28

标签: spring-mvc wildcard-subdomain

我想知道当子域是通配符时,是否可以使用Spring的@RequestMapping访问子域。

例如,我想编写一个在请求任意数量的子域时将被调用的方法,并且还能够获取该人请求的实际子域。

因此,如果他们访问sub1.example.com,它会点击一种方法,我可以映射" sub1"到String变量。

如果他们访问sub2.example.com,它会点击与前一个示例相同的方法,并且我也能够映射" sub2"到一个String变量。

这可能吗?

1 个答案:

答案 0 :(得分:1)

我最终解决的是Spring MVC的这种方法:

@RequestMapping(value="/someUrl")
public String someControllerMethod(ModelMap model, HttpServletRequest request)
{
  String subdomain = request.getServerName().split("\\.")[0];

  log.info("subdomain is: " + subdomain);

  // more code here
}

我只是确保将HttpServletRequest传递给该方法,然后从请求中提取子域。此代码的唯一问题是您的子域中不能有点(。)(否则它只会获取子域的第一部分)。

此解决方案适合我的需求。但如果您有更好的解决方案,请随意发布,如果更好,我会将其作为正确答案。