Я только начал использовать Spring. Я наткнулся на множество учебников.
Я видел больше примеров, используя InternalResourceViewResolver
, чем UrlBasedViewResolver
. Я посмотрел документацию Spring, но я не могу понять, как использовать тот или иной. Может ли кто-нибудь дать какое-то объяснение?
Что отличается между InternalResourceViewResolver и UrlBasedViewResolver
Ответ 1
InternalResourceViewResolver
является удобным подклассом UrlBasedViewResolver
.
JavaDoc описывает некоторые добавленные свойства в InternalResourceViewResolver
, которые могут быть полезны в некоторых ситуациях:
Удобный подкласс UrlBasedViewResolver, который поддерживает InternalResourceView (т.е. сервлеты и JSP) и подклассы, такие как JstlView.
AlwaysInclude
: контролирует, выполняется ли переадресация или добавление.
ExposeContextBeansAsAttributes
: Позволяет всем beans в контексте быть доступным в качестве атрибутов запроса, что означает, что они могут ссылаться на EL в JSP.
ExposedContextBeanNames
: Если не null, указывает список beans, который будет отображаться, в отличие от всех из них.
Источник из spring forum: Spring Q & форум
Ответ 2
Spring поддерживает широкий спектр технологий просмотра. ViewResolvers здесь, чтобы подключить любую из известных поддерживаемых технологий просмотра в ваше приложение.
UrlBasedViewResolver - это простой просмотрщик представлений, который просто разрешает представления разных технологий, сопоставляя шаблоны URL
с соответствующими именами файлов.
UrlBasedViewResolver
здесь, чтобы поддерживать все технологии просмотра типа " AbstractUrlBasedView".
AbstractJasperReportsView
, AbstractPdfStamperView
, AbstractTemplateView
, InternalResourceView
, RedirectView
, TilesView
, XsltView
являются известными подклассами AbstractUrlBasedView
.
Поэтому, когда вы используете UrlBasedViewResolver
, вы можете использовать любой из подклассов AbstractUrlBasedView
как тип вашей технологии просмотра (путем установки только соответствующего viewClass).
InternalResourceViewResolver является подклассом UrlBasedViewResolver
.
Но когда вы используете InternalResourceViewResolver
(что является удобным подклассом UrlBasedViewResolver
), вы можете использовать технологию типа InternalResourceView
в качестве вашей технологии просмотра.
Я думаю, что это отвечает на ваш вопрос.
Ответ 3
InternalResourceViewResolver
- это подкласс подкласса UrlBasedViewResolver
.
UrlBasedViewResolver
- Просмотр имени напрямую разрешен для URL. Явное отображение не предоставляется. Имя вида будет само по себе или вы можете добавить prefix
или suffix
в соответствии с вашим дизайном. Вы также можете префикс как "перенаправление:" и "переслать" для перенаправления и пересылки вашего запроса.
InternalResourceViewResolver
- Подкласс UrlBasedViewResolver, который поддерживает InternalResourceView. InternalResourceView
обертывает JSP или какой-либо другой ресурс одного и того же веб-приложения. Вы можете получить доступ к моделям в JSP, используя EL.
ПРИМЕЧАНИЕ. Некоторые URLBasedViewResolvers (Tiles, Velocity, Freemarker) проверяют, существует ли ресурс и возвращает значение null. Таким образом, они могут быть где угодно в цепочке распознавания зрения. Другие должны быть последними (JSTL/JSP, XSLT, JSON)
Итак, InternalResourceViewResolver
должен быть последним в цепочке видных преобразователей, поскольку он разрешает имя представления, присутствует ли фактический ресурс или нет.
Некоторые другие URLBasedViewReolver s
- InternalResourceViewResolver
- VelocityViewReolver
- FreeMarkerViewReolver
- ThymeleafViewResolver
- XsltViewReolver