Сервлеты - это идиома JavaEE для ответа HTTP-запросов .Вы программируете поведение своего приложения в сервлете, который будет отвечать на запрос.
Tomcat - это контейнер сервлета, что означает, что вы развертываете свое приложение в Tomcat и оно будет управлять всей инфраструктурой связи для вас: оно принимаетсоединений, управляет соединениями с базой данных (*) и будет обращаться к вашим сервлетам для обработки входящих запросов.
web.xml
является частью любого приложения JavaEE, а не Spring.В вашем примере кода 1 объявляется, что ваше приложение будет использовать экземпляр класса org.springframework.web.servlet.DispatcherServlet
для обработки входящих запросов.
Хотя сервлеты являются базовой основой для разработки JavaEE, не рекомендуется создавать свой собственный;вместо этого с помощью Spring вы создаете MVC контроллеры .Затем DispatcherServlet будет вызывать эти контроллеры для обработки запросов.Это просто еще одно косвенное (но очень мощное!)
- это DispatcherServlet, который вызывает qrst.jsp с использованием имени сервлета?
Не напрямую.Это просто совпадение, что ваш сервлет и файл JSP имеют одно и то же имя.
Что загружается при запуске?
Ваш пример кода 2 инструктирует DispatcherServlet для загрузкибобы из файла /someLocation/some-servlet.xml
.Если в этом файле контроллеров EJB и в соответствии с тем, как вы настроили отображение URL , бины из этого файла будут отвечать на входящие запросы.См. ссылку .
Я считаю, что эти элементы init-param являются просто параметрами, которые устанавливаются в java-классе сервлета
init-paramэлементы в web.xml предназначены для класса сервлетов.
Веб-приложение каким-то образом «знает», когда происходит вызов AJAX (dwr), по сравнению с первой загрузкой веб-приложения (когдаего загрузка в первый раз должна использовать qrst.jsp).Откуда он это знает?
В вопросе отсутствуют либо элемент <servlet-mapping>
(находится в web.xml), либо сопоставления URL-адресов (в файлах пружин).Они отвечают за принятие решения о том, должен ли URL обрабатываться сервлетом-диспетчером или сервлетом dwr.
Например, с отображением сервлета, как показано ниже:
<servlet-mapping>
<servlet-name>qsrt</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>dwr</servlet-name>
<url-pattern>*.dwr</url-pattern>
</servlet-mapping>
Тогда все URL-адреса заканчиваются на.do
ответит сервлет диспетчера, а те, которые заканчиваются на .dwr
, будут обработаны сервлетом dwr.Здесь важны имена сервлетов.
Файлы JSP - это отдельная история.Контейнер просто использует их для обработки URL-адреса, заканчивающегося * .jsp.Не создавайте сопоставление сервлетов onw для URL-адресов, заканчивающихся на *.jsp
.Это вызовет только головные боли.Это, вероятно, неопределенное поведение.
Редактировать:
Однако URL-адрес в адресной строке браузера всегда выглядит одинаково: он всегда будет вызывать сервлет qrst
Тогда возможно, что ваше сервлет-отображение будет настолько широким (что-то вроде: <url-pattern>/*</url-pattern>
), что оно будет обрабатывать все, что вы бросаете на сервер, и никогда не даст возможности другим сервлетам обрабатыватьit.
И последнее, но не менее важное: при работе с DWR или любой технологией Ajax установите расширение HttpFox для Firefox , чтобы вы могли отслеживать вызовы Ajax своего приложения.