URL-адрес веб-приложения доступ к java

#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. Из коробки диспетчер-сервлет НЕ будет обслуживать никаких запросов к статическим ресурсам. Если это необходимо, два основных варианта

  1. Сопоставьте DispatcherServlet с другим шаблоном, отличным от root, эффективно изолируя часть Spring MVC от подтекста
  2. Добавьте сопоставление ресурсов в свой контекст 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. Нет, я этого не делаю, ваш тоже не работает 🙂 Я думаю, что сообщение выше раскрывает ситуацию, которую я прочитаю через несколько минут.