Корень контекста Java-сервлета - PullRequest
4 голосов
/ 28 ноября 2009

Допустимо ли иметь несколько записей в качестве корневого контекста сервлета?

Например, все примеры Sun используют один /catalog или что-то похожее в качестве корневого контекста, но может ли это быть также /catalog/furniture?

Спецификация Servlet 2.4 здесь не является конкретной.

Контекстный путь : Префикс пути, связанный с ServletContext, частью которого является этот сервлет. Если этот контекст является «по умолчанию» контекст укоренен в основе пространства имен веб-сервера, это путь будет пустой строкой. В противном случае, если контекст не рутирован в корне пространства имен сервера путь начинается с «/» символ, но не заканчивается символом "/".

Ответы [ 4 ]

2 голосов
/ 14 февраля 2012

МЫ не можем предоставить множественный контекстный корень сервлету. Но мы можем динамически меняться с разными именами в server.xml как

<web-uri>Project.war</web-uri>
<context-root>myproj</context-root>

Мы можем настроить корневой каталог нашего проекта с разными именами, но это должно быть одно имя.

По умолчанию, если вы вызываете contextPath, используя объект запроса как req.getContextPath();, он получит по умолчанию с косой чертой (/) как /myproj.

Для получения дополнительной информации, чтобы изменить корни контекста как статические на динамические, вы можете проверить здесь .

1 голос
/ 28 ноября 2009

Да. Это просто префикс. Он должен начинаться с "/" и не может заканчиваться на "/", если это не "/". Разрешены внутренние косые черты.

0 голосов
/ 28 ноября 2009

Нет. Вы не можете иметь косую черту в корневом пути контекста.

Однако вы можете достичь того же эффекта с контекстным корнем, что и "/ catalog". Просто поместите все ваши статические и JSP-файлы в «/ furniture» в WAR и добавьте карту Servlets соответственно.

0 голосов
/ 28 ноября 2009

например. все примеры Sun используют один "/ catalog" или аналогичный в качестве корневого контекста, но может ли это быть "/ каталог / мебель", а?

В своем файле web.xml вы предлагаете сопоставить "catalog / " и "catalog / furniture / " с одним и тем же сервлетом? Какой в ​​этом смысл? Я думаю, что движок сервлета направит оба этих запроса на один и тот же сервлет.

Если вы предполагаете, что у вас есть два WAR-файла, один с именем catalog.war, а другой с другим именем, и оба должны перенаправить все запросы к одному сервлету, либо у вас должен быть .class файл для этого сервлета в обоих файлах WAR, или корневой сервлет для контекста чего-то еще должен быть записан, чтобы он перенаправлял все запросы в корневой сервлет catalog.war.

Не могли бы вы немного прояснить, что именно вы имеете в виду? Я думаю, что то, чего вы хотели бы достичь, немного сбивает с толку.

...