Отображение сервлета: шаблон URL для URL с косой чертой - PullRequest
26 голосов
/ 07 декабря 2010

У меня есть проблема, связанная с отображением сервлета.У меня есть следующее в 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, но он не позволяет мне положить шаблон, заканчивающийся /.

Ответы [ 2 ]

29 голосов
/ 07 декабря 2010

После того, как вы добавили свой подстановочный знак на <url-pattern>

<url-pattern>/HelloWorld/*</url-pattern>

Вы можете получить дополнительный путь, связанный с URL, используя HttpServletRequest.getPathInfo().

Например

http://localhost:<port>/MyApp/HelloWorld/one/

Результат будет

/one/

Из JavaDoc:

Возвращает любую дополнительную информацию о пути, связаннуюс URL-адресом, отправленным клиентом, когда он сделал этот запрос.Дополнительная информация о пути следует за путем сервлета, но предшествует строке запроса и начинается с символа "/".

7 голосов
/ 07 декабря 2010

Используйте подстановочный знак. Вы можете перенаправить весь трафик, идущий на определенный URL, к тому же сервлету. Например, вы можете добавить следующее:

<servlet-mapping>
    <servlet-name>HelloWorldServlet</servlet-name>
    <url-pattern>/HelloWorld/*</url-pattern>
</servlet-mapping>

Это перенаправит URL с косой чертой на ваш оригинальный сервлет.

Одна мысль - это перенаправит что угодно с этим шаблоном URL на сервлет. Если вы хотите, чтобы другие URL были за этим URL, вам нужно создать сервлет, который будет перенаправлять на правильный URL (глядя на указанный URL). В качестве альтернативы, вы можете использовать каркас, который обеспечивает сопоставление для вас.

...