В джаве недавно, разбираюсь как строятся веб приложения с использованием Spring MVC, Hibernate и Maven. Собрал несколько хеллоу ворлдов, вроде работает, но не пойму кто, какие и в каком порядке читает файлы проекта, в результате чего в браузере открывается построенная мною html страничка.
Процесс компиляции консольных приложений вроде как не сложен. javac компилирует .java файлы, команде "java" скармливается название главного класса, в котором точкой входа служит public void main(String[] args).
А что происходит, когда мы говорим IDE выполнить наш Maven Web Application?
1. IDE сначала проверяет какая у нас система сборки? Узнает это по структуре папок и названиям файлов? Или при создания проекта эта информация уже где-то прописалась?
2. Если я правильно понял, после того как система сборки создала war или jar файл, этот файл передается серверу приложений. Получается, каждый раз когда на порт глассфиша приходит входящий request, сервер приложений сопоставляет запрошенный урл с тем war'ником, который я ему скормил? И при состоявшемся соответствии лезет внутрь этого файла?
3. Как сервер приложений понимает, что пути к файлам надо смотреть именно в web.xml? Я использую Netbeans и изначально по умолчанию проект создается вообще без него.
4. На каком этапе всего этого действа создаются в памяти объекты описанные в наших конфигах в тегах ?
На всякий случай прикладываю дерево моего проекта
А также код моих
web.xml
<web-app ...>
<servlet>
<servlet-name>mvc-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
</web-app>
mvc-dispatcher-servlet.xml
<beans ...>
<context:component-scan base-package="ru.domain" />
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix">
<value>/WEB-INF/pages/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
<mvc:resources mapping="/resources/**" location="/theme_default/" />
<mvc:annotation-driven />
</beans>
и ссылка на
Github