#java #url #request #web
#java #url-адрес #запрос #паутина
Вопрос:
Я пытаюсь понять, как работают запросы. К сожалению, сначала я был брошен на кодирование, а только потом на понимание.
Несколько лет назад я написал несколько действительно простых веб-приложений на Java, и они работали так, как ожидалось. На его главной веб-странице (.jsp) у меня было следующее в качестве одной из кнопок меню:
<p><a href="home.jsp">test</a></p>
В настоящее время я пишу новое веб-приложение и многое забыл. На этот раз я делаю это с помощью Spring MVC и правильно. Я не могу понять, почему этот фрагмент больше не приводит меня к файлу home.jsp в текущем веб-приложении и почему сначала я использовал его в старом приложении.
Apache выдает: запрошенный ресурс () недоступен.
Дело не в том, что мне нужно такое прямое взаимодействие, просто я пытаюсь понять, доступны ли ресурсы через URL? Обеспечивает ли Spring MVC дополнительную безопасность, когда только запросы, обработанные сервлетом, могут привести к представлению? Я упускаю что-то действительно тривиальное?
Более того, в том же самом старом меню веб-приложения у меня была прямая ссылка на сервлет, но в настоящее время я не могу сделать такую прямую ссылку на сервлет в новом веб-приложении. Я могу сделать соответствующий запрос, который будет захвачен сервлетом, но не по его имени.
Apache выдает: запрошенный ресурс () недоступен.
Ссылка на сервлет из меню:
<% if((String) session.getAttribute("passengerFound") != null){ %>
<a href="TripRecentBook"><img style="border:0" src="menuButtons/My Trips.png" alt="My Trips"/></a> <%} %>
Спасибо, держу пари, это действительно просто. Я действительно хочу понять, пожалуйста, помогите.
Я знаю, что это как-то связано с фронт-контроллером (DispatcherServlet), но я не могу сформулировать логическое и твердое объяснение в своей голове.
Ответ №1:
я просто пытаюсь понять, доступны ли ресурсы через URL
Короче говоря, нет. Поведение по умолчанию и рекомендуемая конфигурация при использовании Spring MVC заключается в сопоставлении Spring DispatcherServlet с шаблоном /
url, что означает, что ВСЕ запросы отправляются в DispatcherServlet. Из коробки диспетчер-сервлет НЕ будет обслуживать никаких запросов к статическим ресурсам. Если это необходимо, два основных варианта
- Сопоставьте DispatcherServlet с другим шаблоном, отличным от root, эффективно изолируя часть Spring MVC от подтекста
- Добавьте сопоставление ресурсов в свой контекст spring (ваш applicationContext.xml ).
<mvc:resources mapping="/res/**" location="/res/" />
Это выше указывало бы spring mvc обрабатывать все запросы в /res/** как запросы на статические ресурсы (например, изображения и т.д.) и что эти ресурсы физически расположены в папке /res/ в корне приложения.
Комментарии:
1. Вы правы. У меня есть мой файл .css, и прямой запрос ProjectName/resources/screen.css работает. Таким образом, без моего явного указания, какой запрос обрабатывать и как, невозможно получить какие-либо ресурсы из моего приложения, что повышает нашу безопасность. Спасибо.
Ответ №2:
Возможно, вам просто не хватает «/» "/home.jsp"
, как вместо "home.jsp"
Комментарии:
1. Нет, я этого не делаю, ваш тоже не работает 🙂 Я думаю, что сообщение выше раскрывает ситуацию, которую я прочитаю через несколько минут.