У меня возникли вопросы о отправке запроса в сервлет.Servlet - запрос на отправку, когда url-patern похож на
Чтобы подвести итог, я развернул сайт на общедоступном сервере, что заставило меня иметь url-шаблон вроде/servlet/* для всех моих сервлетов (я слышал, что это была конфигурация по умолчанию в любом случае). Проблема в том, что при разработке приложения у меня не было таких ограничений и поэтому не построил его для поддержки таких шаблонов ... теперь мое приложение просто не работает из-за URL-адресов. Скажем, мне сервлет объявляется и отображается так:
<servlet>
<servlet-name>MainController</servlet-name>
<servlet-class>controller.controllers.MainController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MainController</servlet-name>
<url-pattern>/servlet/MainController</url-pattern>
</servlet-mapping>
Проблема заключается в том, что я использую этот код в моем Servlet:
this.getServletContext()
.getRequestDispatcher(destination).forward(request, response);
Параметр destination
всегда *.jsp
в корне моего веб-приложение Juste как «/index.jsp», «home.jsp» и т.д.
Когда я использую мое приложение на локальном хосте мой сервлет имел этот шаблон URL:
<url-pattern>/MainController</url-pattern>
и все работало нормально, потому что диспетчер запросов всегда искал .jsp в корне webapp. Но теперь с моим новым URL-шаблон, он пытается Серч все мои .jsp в сервлет/* так же, как servlet/index.jsp
и, Corse бросить мне HTTP Status 404 - /servlet/index.jsp
Я прекрасно понимаю, почему он ведет себя так, как, если я помню ну, сервлеты не могут распространяться за пределы их текущего контекста.
Но мой вопрос: я обречен? Разве нет способа сказать диспетчеру запроса перейти к .jsp, я спрашиваю, не заботясь о шаблоне «/ servlet/*»? Мне абсолютно нужен объект запроса, потому что я работаю с ним перед его отправкой.
Я действительно не знаю, как пройти через это, поэтому я ищу какую-то помощь здесь, надеясь, что кто-то уже столкнулся с этой ситуацией или, по крайней мере, получил более четкое видение ситуации, чем я.
Спасибо, что нашли время, чтобы прочитать это и помочь мне.
С уважением,
Sampawende.
Hi BalusC, благодарит за ваш быстрый ответ. На самом деле все мои пункты назначения начинаются с «/», даже если бы действительно было лучше добавить чек непосредственно перед отправкой. Сейчас мое приложение проверяет, должны ли страницы возвращаться на сервер перед их отображением, поэтому доступ к ним напрямую не является проблемой. Да, мое приложение действительно основано на этом getRequestDispatcher(). Forward (request, response), поэтому ничего не работает. , но в любом случае точки, которые вы говорите, интересны, и я буду реорганизовывать свой код на некоторые моменты, спасибо. С уважением, Sampawende. – Sampawende