Отображение сервлета: url-шаблон для URL-адресов с завершающим слэшем
У меня проблема, связанная с отображением сервлета. У меня есть следующее в web.xml:
<servlet>
<servlet-name>HelloWorldServlet</servlet-name>
<servlet-class>test.HelloWorldServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorldServlet</servlet-name>
<url-pattern>/HelloWorld</url-pattern>
</servlet-mapping>
Если я получаю доступ к http://localhost:<port>/MyApp/HelloWorld
, вызывается сервлет HelloWorldServlet
.
Я также хочу, чтобы мой сервиз отвечал на http://localhost:<port>/MyApp/HelloWorld/
. Как я могу достичь этого эффекта? Я разрабатываю NetBeans, но это не позволяет мне создать шаблон, заканчивающийся /
.
Ответы
Ответ 1
После того, как вы добавили свой шаблон в свой <url-pattern>
<url-pattern>/HelloWorld/*</url-pattern>
Вы можете получить дополнительный путь, связанный с URL, используя HttpServletRequest.getPathInfo()
.
например.
http://localhost:<port>/MyApp/HelloWorld/one/
Результат будет
/one/
Из JavaDoc:
Возвращает любую дополнительную информацию о пути связанный с URL-адресом клиента отправлен, когда он сделал этот запрос. дополнительная информация о пути следования сервлета, но предшествует запросу string и начнется с символа "/" характер.
Ответ 2
Используйте подстановочный знак. Вы можете перенаправить весь трафик на определенный URL-адрес на тот же сервлет. Например, вы можете добавить следующее:
<servlet-mapping>
<servlet-name>HelloWorldServlet</servlet-name>
<url-pattern>/HelloWorld/*</url-pattern>
</servlet-mapping>
Это приведет к перенаправлению URL-адреса с косой чертой в исходный сервлет.
Одна мысль - это перенаправит что-либо на этот шаблон URL-адреса на сервлет. Если вы хотите, чтобы другой URL-адрес прошел через этот URL-адрес, вы должны создать сервлет, который будет перенаправлен на правильный URL-адрес (просмотрев указанный URL-адрес). Кроме того, вы можете использовать фреймворк, который обеспечивает отображение для вас.