Получение нескольких частей из 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);
надеюсь, что этот код очевиден