Java context in web xml

Spring MVC Java Config (конфигурация с аннотациями) для web.xml

Пример преобразования дескриптора развертывания web.xml в конфигурацию Spring MVC Java Config (конфигурация с аннотациями).

Обзор приложения Spring MVC + AngularJS + Bootstrap + HTML5
Используемые технологии и библиотеки

1. Описание задачи

Преобразовать дескриптор развертывания web.xml в программную конфигурацию с помощью Java config (POJO класс).

2. Структура проекта

Чтобы поменять xml конфигурации ( web.xml , security-config.xml , mvc-config.xml , application-context.xml ) на вариант Java Config с использованием классов и аннотаций был добавлен пакет javaconfig . В нем содержаться классы, соответствующие xml конфигурации, которые были использованы на протяжении цикла статей этого проекта. WebConfig является аналогом web.xml , ApplicationConfig = application-context.xml , MVCConfig = mvc-config.xml , SpringSecurityInit и SecurityConfig являются аналогом security-config.xml .

3. Важное замечание

Это первая часть из нескольких статей по переходу от xml конфигурации к Java конфгурации. Поэтому просто убрав web.xml и заменив на аналог WebConfig из этой статьи работать приложение у вас не будет. Используйте полную конфигурацию из скачанного проекта или используйте эту статью как справочную информацию по сопоставлению элементов из xml файла с java конфигурацией.

4. web.xml

Т.к. все настройки были описаны в предыдущих статьях, то здесь будет минимум описаний каждого элемента. Код можно легко сравнить сопоставляя названия xml и java класса.

Источник

Структура web.xml

Файл web.xml хранит информацию о конфигурации приложения. Он не является обязательной его частью, однако очень широко используется для настройки конфигурации веб-приложения.

Этот файл должен располагаться в папке WEB-INF. При запуске Tomcat считывает его содержимое и использует записанную в нем конфигурацию. Если же файл содержит ошибки, то и Tomcat отображает ошибку.

    HelloWorld HelloServlet   HelloWorld /welcome   index.html   

Зеленым цветом тут записан маппинг имя сервлета «HelloWorld» и класса сервлета «HelloServlet» . Синим цветом записан маппинг имя сервлета «HelloWorld» и куска URL «http://localhost/welcome» . Таким образом тут написано, что при обращении к пути /welcome нужно вызвать сервлет HelloServlet.class .

Красным цветом указан файл, который нужно отдать по запросу http://localhost/ — это так называемая welcome page . Если пользователь просто вобьет в браузере имя, соответствующее корню нашего веб-приложения, то ему отдается содержимое файла index.html .

Читайте также:  Typescript question mark dot operator

7.2 servlet, servlet-mapping

Один сервлет может обслуживать запросы по разным урлам, поэтому в web-xml сервлет и его маппинг на урлы записываются отдельно. Сначала описываем сервлеты, давая каждому уникальное строковое имя, а затем уже указываем, как каждый сервлет мапится на какой url.

   remoting com.javarush.RemotingServlet 1  remoting /remoting/*   restapi com.javarush.RestApiServlet 2  restapi /api/*   

В этом примере объявлено два сервлета, и каждый замаплен на свой шаблон url. Сервлет RemotingServlet обслуживает все запросы, которые идут на /remoting/* . Сервлет RestApiServlet обслуживает все запросы, которые идут на /api/* . Так же у сервлетов прописан порядок из загрузки — параметр load-on-startup.

7.3 Параметры сервлета

С помощью web.xml сервлету при его инициализации можно передать параметры, они будут доступны через интерфейс ServletConfig . Также можно задать параметры всему веб-приложению, они будут доступны через интерфейс ServletContext .

    Server production mode productionMode false  appPropertiesConfig classpath:local-app.properties classpath:web-app.properties   mainservlet com.javarush.ApplicationServlet application com.javarush.App  widgetset com.javarush.WidgetSet  ui com.javarush.AppUI    
  • productionMode со значением false
  • appPropertiesConfig с массивом из двух строк:
    • classpath:local-app.properties
    • classpath:web-app.properties

    Синим цветом указаны параметры для сервлета ApplicationServlet , они будут доступны ему через ServletConfig :

    • application со значением com.javarush.App
    • widgetset со значением com.javarush.WidgetSet
    • ui со значением com.javarush.AppUI

    7.4 filter, filter-mapping

    Веб-приложение может также содержать специальные служебные сервлеты — фильтры . Они выполняют различные служебные задачи: перенаправляют вызовы, проверяют авторизацию и т. д.

        remoting RemotingServlet 1  remoting /remoting/*   total_filter com.javrush.TotalFilter  total_filter /*   

    Прежде чем запрос попадет в сервлет RemotingServlet , он будет обработан фильтром TotalFiler . Этот фильтр настроен так, чтобы перехватывать все запросы , которые идут к нашему веб-приложению. Об это однозначно намекает шаблон урлов, на которые он замаплен: /* .

    Больше про сервлеты и фильтры ты прочитаешь в следующих лекциях.

    Источник

Оцените статью