Этого можно добиться, используя HandlerInterceptor
:
Перехватчик проверит, заканчивается ли URI запроса косой чертой.Если это так, запрос обрабатывается, если нет, ответ перенаправляется с тем же URI с завершающей косой чертой.В приведенном ниже примере я игнорирую запросы со строкой запроса, поскольку я не знаю, как вы хотите обработать этот случай.
Перехватчик:
@Component
public class TrailingSlashInterceptor extends HandlerInterceptorAdapter implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
if(StringUtils.isBlank(request.getQueryString()) && !request.getRequestURI().endsWith("/")) {
response.sendRedirect(request.getRequestURL().append("/").toString());
return false;
}
return true;
}
}
Зарегистрировать и отобразить перехватчикв вашей конфигурации:
@Autowired
private TrailingSlashInterceptor trailingSlashInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry
.addInterceptor(trailingSlashInterceptor)
.addPathPatterns("/**")
.excludePathPatterns("/static/**");
}
Я заметил, что в вашем JSP, если у вас есть, вы должны начать URL с косой черты, например: <c:url value="/clients" />
Используя этот метод, всезапросы без косой черты будут временно перенаправлены (302) к тому же URI с косой чертой.