Всегда добавляйте косую черту в URL - PullRequest
0 голосов
/ 29 сентября 2018

Я использую Spring MVC с Spring Controllers.Я хочу всегда добавлять косую черту, если ее нет в конце URL.Как я могу это сделать?

www.mysite.com/something -> www.mysite.com/something/
www.mysite.com/somethingelse/ -> www.mysite.com/somethingelse/

1 Ответ

0 голосов
/ 29 сентября 2018

Этого можно добиться, используя 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 с косой чертой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...