Я надеюсь, что кто-нибудь сможет мне помочь с этим. Я запускаю фиктивный сервлет на сервере Tomcat. В основном это работает, сайт доступен после запуска.
Я хотел бы указать собственный URL, например localhost:8080/mydesiredname
Я развертываю свой сервлет как файл .war. Оказалось, что имя .war определяет имя URL-адреса, по которому доступен Tomcat. Если он называется abc, мой сервлет будет работать под localhost:8080/abc.
Хотя я не недоволен этим решением, я задаюсь вопросом, чем хорош servlet-mapping в <Tomcathome>/conf/web.xml. Я попытался переопределить и / или добавить дополнительное имя URL-адреса, под которым мой сервлет должен быть доступен, но это, похоже, не работает.
Мой код в web.xml выглядит так:
<servlet>
<servlet-name>ABC</servlet-name>
<servlet-class>myservlet.TheServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ABC</servlet-name>
<url-pattern>/otherUrl</url-pattern>
</servlet-mapping>
Поэтому я ожидал бы, что мой сервлет доступен только для /otherUrl или дополнительно к URL-адресу, определяемому именем .war. Я, наверное, что-то упускаю. Могут ли некоторые прояснить это для меня?




Здесь необходимо понять две концепции: контекстный путь (где можно найти приложение) и путь к сервлету.
контекстный путь всегда относительно имени хоста (э-э, достаточно близко). Итак, если у вас есть контекст под названием mydesiredname, вы можете найти его на https://example.com/mydesiredname.
Все URL-адреса в WEB-INF/web.xml приложения зависят от контекста. Это означает, что если вы укажете /ABC для <url-mapping> вашего сервлета (или путь к сервлету), то вы достигнете этого сервлета, запросив https://example.com/mydesiredname/ABC.
В веб-приложении нет способа ответить на URL-адрес, который находится «вне» вашего контекстный путь, потому что контейнер не будет отправлять запросы к https://example.com/ABC веб-приложению с контекстный путь/mydesiredname.
Если вы хотите получить доступ к сервлету с помощью https://example.com/ABC, то вам нужно развернуть свое веб-приложение в так называемом «корневом» контексте. В Tomcat вы делаете это, называя свой WAR-файл ROOT.war, а контекстный путь становится "" (пустая строка).
Не модифицируйте
<Tomcathome>conf/web.xml. Вместо этого вам следует редактировать файлWEB-INF/web.xmlв своем собственном приложении.