Подтвердить что ты не робот

Что такое url-шаблон в web.xml и как настроить сервлет

Я вручную настроил web.xml для своего приложения. Теперь я сталкиваюсь с проблемами при запуске приложения. Я пытаюсь получить доступ к моей servlet с моей страницы jsp. Но, это бросает ошибку как page not found.

Сервлеты помещаются в папку ниже

<application folder>/WEB-INF/classes/<package>

Итак, какими должны быть записи для сервлетов в url-pattern и servlet-mapping. Таким образом, servlet может быть доступен через URL.

4b9b3361

Ответ 1

url-pattern используется в web.xml для сопоставления вашего servlet с определенным URL-адресом. См. Ниже код xml, аналогичный код, который вы можете найти в конфигурационном файле web.xml.

<servlet>
    <servlet-name>AddPhotoServlet</servlet-name>  //servlet name
    <servlet-class>upload.AddPhotoServlet</servlet-class>  //servlet class
</servlet>
 <servlet-mapping>
    <servlet-name>AddPhotoServlet</servlet-name>   //servlet name
    <url-pattern>/AddPhotoServlet</url-pattern>  //how it should appear
</servlet-mapping>

Если вы измените url-pattern на AddPhotoServlet от /AddPhotoServlet до /MyUrl. Тогда сервлет AddPhotoServlet может быть доступен с помощью /MyUrl. Хорошо по соображениям безопасности, где вы хотите скрыть свой фактический URL-адрес страницы.

Java Servlet url-pattern Спецификация:

  • Строка начинается с символа '/' и заканчивается символом '/*'суффикс используется для отображения пути.
  • Строка, начинающаяся с '*.'префикс используется как расширение.
  • Строка, содержащая только символ '/', указывает сервлет приложения по умолчанию. В этом случае путь сервлета является URI запроса, минус путь контекста, и информация о пути ноль.
  • Все остальные строки используются только для точных совпадений.

Ссылка: Спецификация сервлетов Java

Вы также можете увидеть эту настройку сервлета

Ответ 2

Сервлет-сопоставление имеет два дочерних тега, url-шаблон и имя сервлета. url-pattern указывает тип URL-адресов, для которых должен быть вызван сервлет, указанный в имени сервлета. Имейте в виду, что контейнер будет использовать регистр для сравнения строк для сопоставления сервлетов.

Первая спецификация файла url-pattern a web.xml для контекста сервера в контейнере сервлета на сервере .com соответствует шаблону в <url-pattern>/status/*</url-pattern> следующим образом:

http://server.com/server/status/synopsis               = Matches
http://server.com/server/status/complete?date=today    = Matches
http://server.com/server/status                        = Matches
http://server.com/server/server1/status                = Does not match

Вторая спецификация url-pattern Контекст, расположенный на пути/примерах агента в example.com, соответствует шаблону в <url-pattern>*.map</url-pattern> следующим образом:

 http://server.com/server/US/Oregon/Portland.map    = Matches
 http://server.com/server/US/server/Seattle.map     = Matches
 http://server.com/server/Paris.France.map          = Matches
 http://server.com/server/US/Oregon/Portland.MAP    = Does not match, the extension is uppercase
 http://example.com/examples/interface/description/mail.mapi  =Does not match, the extension is mapi rather than map`

Третья спецификация url-mapping. Отображение, содержащее шаблон <url-pattern>/</url-pattern>, соответствует запросу, если другой шаблон не совпадает. Это сопоставление по умолчанию. Сервлет, сопоставленный этому шаблону, называется сервлетом по умолчанию.

Отображение по умолчанию часто направляется на первую страницу приложения. Явное предоставление сопоставления по умолчанию также гарантирует, что искаженные URL-запросы в обращении приложения обрабатываются приложением, а не возвращают ошибку.

Элемент сопоставления сервлет ниже отображает экземпляр сервлета server в сопоставление по умолчанию.

<servlet-mapping>
  <servlet-name>server</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>

В контексте, который содержит этот элемент, любой запрос, который не обрабатывается другим сопоставлением, перенаправляется в сервлет server.

И самое главное, мы должны знать о правиле для сопоставления URL-адресов

  • Контейнер попытается найти точное соответствие пути запроса к пути сервлета. Успешное совпадение выбирает сервлет.
  • Контейнер будет рекурсивно пытаться сопоставить самый длинный префикс пути. Это делается путем постепенного изменения дерева путей в каталоге, используя символ/как разделитель путей. Наибольшее совпадение определяет выбранный сервлет.
  • Если последний сегмент пути URL содержит расширение (например,.jsp), контейнер сервлета попытается сопоставить сервлет, обрабатывающий запросы для расширения. Расширение определяется как часть последнего сегмента после последнего. характер.
  • Если ни одно из предыдущих трех правил не приводит к совпадению сервлета, контейнер будет пытаться обслуживать контент, соответствующий запрашиваемому ресурсу. Если для приложения определен сервлет по умолчанию, он будет использоваться.

Ссылка Шаблон URL