Сервлет Java извлекает Spring RequestMapping Url - PullRequest
0 голосов
/ 08 января 2019

Я написал Перехватчик запросов для добавления некоторой информации к запросам в тестовой среде.

public boolean preHandle(HttpServletRequest request,
                         HttpServletResponse response, Object handler)
        throws Exception {
    ...
}

public void postHandle(
        HttpServletRequest request, HttpServletResponse response,
        Object handler, ModelAndView modelAndView)
        throws Exception {
        ...
}

В настоящее время я получаю URL-адреса примерно так:

String url = request.getServletPath();

Для контроллера, подобного этому:

@RequestMapping(value = "/{id}",
        method = RequestMethod.GET)
public ResponseEntity<?> getByID(@PathVariable long ID) {
    ...
}

А для запроса типа /1/ url будет /1/

Есть ли способ получить значение сопоставления запроса ==> /{id}

Заранее спасибо

1 Ответ

0 голосов
/ 08 января 2019

@RequestMapping и методы составленной аннотации (т.е. @GetMapping, @PostMapping и т. Д.) Обрабатываются HandlerMethod. Приведите объект-обработчик к нему, и вы получите доступ к необходимой информации @RequestMapping:

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

    if (handler instanceof HandlerMethod) {
        HandlerMethod hm = (HandlerMethod) handler;
        RequestMapping mapping = hm.getMethodAnnotation(RequestMapping.class);
        if (mapping != null) {
            for(String val : mapping.value()) {

                //***This is the mapping value of @RequestMapping***
                System.out.println(val);
            }
        } 
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...