Spring mvc控制器-如何做url限制



这是spring mvc控制器/city/{cityName}

@RequestMapping(value = "/city/{cityName}")
     public String getCity (@PathVariable("cityName") String cityName, Model uiModel) {
}
www.example.com/city/{cityName}

这里cityName是从url动态加载的,我的网站无法支持cityName的某些功能,由于动态因素,它只支持班加罗尔、科钦、海得拉巴和金奈它支持其他城市或cityName的任何位置,它给出错误,如何将cityName仅限于上述4个城市。

控制器本身是否有任何方法,或者我们必须维护表(硬编码哈希表)

建议哪种方法是进行的最佳方法

如果您只想在代码中对这四个城市进行硬编码,还可以在@RequestMapping中使用正则表达式指定它们。

@RequestMapping("/cities/{cityName:Bengaluru|Kochin|Hyderabad|Chennai}")
public String getCity(@PathVariable("cityName") String cityName) {
}

这样,如果您指定的城市与允许的值不匹配,您的控制器将自动返回HTTP404。

更新:修复了示例,正则表达式应该在@RequestMapping中,而不是在@PathVariable中,很抱歉出现错误

您要么需要单独的控制器映射,要么在某处查找cityName。这不需要硬编码;您可以使用YAML或属性文件来初始化Set或在数据库中查找它。

我们可以在控制器级别静态执行@RequestMapping(value="/city/{cityname:bengaluru|chennai|kochin|hyderabad}")或者,我们可以在应用程序启动时创建表、查询并将其放入哈希表中。

最新更新