Получение нескольких частей из URL внутри контроллера

Мой сервлет сопоставлен с <url-pattern> /controller/*/* </url-pattern> мой URL такой controller/12341/ABC123 будет всегда так, но значения могут быть изменены.

Я пытаюсь получить значение первого * и второй * какие подарки serial & mac

Я пишу следующий код, но он возвращает только последнюю часть ACB123

String mac= request.getPathInfo().replace("/", "");

Как я могу получить оба vaules?

1 ответ

Если я правильно прочитал спецификацию сервлета, у вас не может быть нескольких подстановочных знаков. Пытаться

<url-pattern>/controller/*</url-pattern>

А потом:

String[] parts = request.getPathInfo().split("/");
String serial = parts[1]; // before last index
String mac = parts[2]; // last index

Конечно, вам потребуется некоторая обработка ошибок для этого.

С другой стороны: API-интерфейс Pure servlet - трудная задача. Если у вас есть только этот сервлет или вы каким-то образом ограничены, это может быть хорошо. Однако, если у вас есть больше сервлетов и вам даже нужна обработка параметров HTTP-запросов, разбор и т. Д., Использование среды, такой как Spring WebMVC, может быть более подходящим.

String [] strings = "controller/12341/ABC123".split("/");
    assert (Objects.equals(strings[1], "12341") == true);
    assert (Objects.equals(strings[2], "ABC123") == true);

надеюсь, что этот код очевиден

Другие вопросы по тегам