Перехватчики часто используются в весеннем MVC. При настройке путей, которые необходимо перехватить, часто используется суббота <mvc: mapping/>>. Он имеет атрибут пути, который используется для указания пути, которые необходимо перехватить. Например:
<MVC: Interceptor> <MVC: PATH mapping = "/**"/> <bean/> </mvc: receptor> </mvc: receptor>
Согласно вышеуказанной конфигурации, этот перехватчик перехватывает все запросы.
Сопоставление пути в Spring MVC гораздо более гибкий, чем стандартный web.xml. Политика по умолчанию реализует org.springframework.util.antpathmatcher. Как следует из названия, шаблон пути использует путь стиля Apache Ant. Существует три метода сопоставления подстановочных знаков для путей стиля Apache Ant (перечислены в таблице ниже). Они могут сочетать много гибких шаблонов пути.
Столовые муравейные символы
Подстановочный знак | Описание |
| ? | Соответствовать любому отдельному персонажу |
| * | Сопоставьте 0 или любое количество символов |
| ** | Соответствовать 0 или более каталогам |
Пример примера таблицы паттернов пути в стиле муравья
| Путь | Описание |
| /app/*.x | Соответствует всем файлам .x по пути приложения |
| /app/p? ttern | Matches /App /Pattern и /App /pxttern, но не /app /pttern |
| /**/пример | Matches /App /Пример, /App /foo /Пример и /Пример |
| /app/**/dir/file. | Matches /app/dir/file.jsp, /app/foo/dir/file.html, /app/foo/bar/dir/file.pdf и /app/dir/file.java |
| /**/*.jsp | Соответствует любому файлу .jsp |
Ручное время
Веб -приложение в основном зависит от отображения между URL -адресом и процессором запроса, и то же самое относится и к Spring MVC, но Spring MVC так же, как и все, что делает Spring (Translator: Gible, может настроить все виды вещей, но также создает много сложности). Конечно, существует не только один способ сопоставить отношения между URL -адресом и контроллером, и на самом деле это позволяет вам создавать правила отображения и реализации, а не полагаться на отображения URL.
Spring обеспечивает обработку картирования URL, а порядок и метод обработки не ограничиваются каким -либо интерфейсом. Spring MVC по умолчанию org.springframework.web.servlet.handler. AbstractUrlhandLermapping будет соответствовать пути с самым длинным шаблоном пути.
Например: с учетом запроса/app/dir/file.jsp, и теперь есть два шаблона соответствия пути /**/*.jsp и /app/dir/*.jsp, а какой шаблон будет соответствовать URL? Последний шаблон/app/dir/*.jsp будет соответствовать принципу самых длинных символов, у которого больше символов, чем /**/*.jsp. Обратите внимание, что этот принцип не указан ни в одном высокоуровневом интерфейсе, но является детализацией реализации.
Beannameurlhandlermapp
Реализация стратегии отображения по умолчанию - это класс org.springframework.web.servlet.handler.beannameurlhandlermapping. Этот класс требует, чтобы любой боб, который можно обработать запрос, имел имя или псевдоним, начиная с символа Backslash (/). Это имя или псевдоним может быть любым именем, которое соответствует принципу соответствия пути URL.
Перечисление контроллера, нанесенного на карту по имени бока
XML -код
<bean name = "/home"> <name = "fellyservice" ref = "FlightService"/> </bean>
■ Примечание. Вы не можете использовать атрибут идентификатора для указания любого пути URL -адреса, потому что (/) символы запрещены в спецификациях XML для указания идентификатора XML, но вы можете иметь атрибуты как идентификатора, так и имени в определении бобов.
Это очень проще в использовании и имеет некоторые недостатки. Он не может ссылаться на прототип бобов. Другими словами, при использовании BeannameUrlhandlermapping все классы обработки запросов могут быть только одиночными. Вообще говоря, контролеры устанавливаются в соответствии с Singletons, так что это не очень серьезная проблема. Кроме того, я буду представлять контроллеры в следующих главах, и будет только несколько типов контроллеров, которые должны быть прототипами.
■ ПРИМЕЧАНИЕ: прототип бобов-это не-синглетонский боб. Каждый раз, когда называется метод getBean () ApplicationContext, будет возвращен новый экземпляр Bean.
Другая проблема с Beannameurlhandlermapping заключается в том, что в вашем приложении применяется перехватчик. Поскольку запрашиваемая карта и карта IMPAPING бобов связаны вместе и не разделены, невозможно создать сложные отношения между контроллером и перехватчиком. Если у вас есть сложные требования к отображению запросов, вы можете использовать SimpleUrlHandLermapping вместо BeanNameUrlHandlerMapp. SimpleUrlhandlermapping - это еще один вариант для Beannameurlhandlermapp. Производное мандлермоп непосредственно указывает на две основные слабости Beannameurlhandlermapp. Он может отображать процессоры запроса типа прототипа, и он позволяет создавать сложные и гибкие пути картирования между обработчиками и перехватчиками. Алгоритм отображения использует те же основные компоненты, что и BeannameUrlhandlermapp, поэтому этот шаблон по -прежнему предназначен для карты URL -адресов для запросов обработчиков (обработчиков запроса), вы можете просто объявить его в ApplicationContext и использовать SimpleHundLermapping. DispatcherServlet будет найден в соответствии с типом и не будет создавать Mapper по умолчанию (Beannameurlhandlermapping). Это означает, что если вы хотите использовать оба, вы должны объявить все это в ApplicationContext.
■ Приглашение DispatcherServlet будет обрабатывать запросы в цепочке (переводчик: запросы на процесс. В последовательности вы можете обратиться к режиму цепочки ответственности в фильтрах и GOF), что позволяет обрабатывать сопоставления в соответствии с вашими требованиями. Процессор отображения (сопоставления обработчиков) реализует интерфейс oronderedr.
Выше приведено все содержание этой статьи о подробном объяснении принципа сопоставления пути Spring MVC, я надеюсь, что это будет полезно для всех. Заинтересованные друзья могут продолжать ссылаться на другие связанные темы на этом сайте. Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!