Почему servletPath с Spring RequestMapping отличается от servletPath с urlMapping сервлета? - PullRequest
0 голосов
/ 12 сентября 2018

Я выполняю рефакторинг простого старого приложения на основе сервлетов в свежий SpringBoot, потому что я влюблен в экосистему Spring.

В этом унаследованном приложении есть некоторая бизнес-логика, основанная на HttpServletRequest.getServletPath().( Да, это не красиво, но я не могу изменить это, потому что это внешняя библиотека ).

Поэтому мне нужно обработать все запросы http и ответ на службу .

Первый способ, с ServletRegistrationBean, сопоставленным с "/ byservlet / *"

    @Bean
    public ServletRegistrationBean<Servlet> servletRegistrationBean(Servlet myServlet) {
        return new ServletRegistrationBean<Servlet>(myServlet, "/byservlet/*");
    }

Второй способ, с оболочкой RestControler, сопоставленной с "byrequestmapping / *"

Я предпочитаю использовать всю весеннюю экосистему

@RestController
public class USWServiceControler {

    private HttpServlet servlet;

    public USWServiceControler(Httpservlet) {
        this.servlet = servlet;
    }

    @RequestMapping("byrequestmapping/*"})
    public void process(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException  {
        servlet.service(request, response);
    }

Разница в стоимости для getServletPath

С запросом типа http://localhost:8080/byservlet/foo Я получаю

SERVLET_PATH : /byservlet
PATH_INFO : /foo

С запросом типа

С запросом типа http://localhost:8080/byservlet/foo Я получаю

SERVLET_PATH : /byrequestmapping/foo
PATH_INFO : null

Почему и Как получить servletPath как старый файлсервлет?

Вот на вопросы:)

Спасибо

...