InternalResourceViewResolver与UrlBasedViewResolver有何不同
我刚开始使用Spring。 我遇到了很多教程。 我看到使用InternalResourceViewResolver
不是UrlBasedViewResolver
更多示例。 我查看了Spring文档,但我无法弄清楚使用其中一个的好处。 有人可以提供一些解释吗?
InternalResourceViewResolver
是UrlBasedViewResolver
一个方便的子类。
JavaDoc描述了InternalResourceViewResolver
中的一些添加属性,这些属性在某些情况下可能很有用:
UrlBasedViewResolver的便捷子类,支持InternalResourceView (即Servlet和JSP)和子类,如JstlView。
AlwaysInclude
:控制是否完成转发或包含。
ExposeContextBeansAsAttributes
:允许上下文中的所有bean作为请求属性使用,这意味着可以从JSP中的EL引用它们。
ExposedContextBeanNames
:如果为非null,则指定将公开的bean列表,而不是所有bean。
来自春季论坛的来源: 春季问答论坛
Spring支持各种视图技术。 ViewResolvers可以将任何已知的受支持视图技术插入到您的应用程序中。
UrlBasedViewResolver是一个简单的视图解析器,它通过将URL
模式与相应的文件名匹配来简单地解析不同技术的视图。
UrlBasedViewResolver
支持所有类型为“ AbstractUrlBasedView ”的视图技术。
AbstractJasperReportsView
, AbstractPdfStamperView
, AbstractTemplateView
, InternalResourceView
, RedirectView
, TilesView
, XsltView
是AbstractUrlBasedView
的已知子类。
因此,当您使用UrlBasedViewResolver
您可以使用AbstractUrlBasedView
任何一个子类作为视图技术的类型(仅通过设置相应的viewClass)。
InternalResourceViewResolver是UrlBasedViewResolver
的子类。
但是当您使用InternalResourceViewResolver
(它是UrlBasedViewResolver
一个方便的子类)时,您只能使用InternalResourceView
类型的技术作为您的视图技术。
我想这回答了你的问题。
InternalResourceViewResolver
是UrlBasedViewResolver
子类。
UrlBasedViewResolver
– 视图名称直接解析为URL。 没有提供显式映射。 视图名称将是URL本身,或者您可以根据您的设计添加prefix
或suffix
。 您还可以使用前缀“redirect:”和“forward:”来重定向和转发您的请求。
InternalResourceViewResolver
– 支持InternalResourceView的UrlBasedViewResolver的子类。 InternalResourceView
包装JSP或同一Web应用程序的某些其他资源。 您可以使用EL访问JSP中的模型。
注意 :一些URLBasedViewResolvers(Tiles,Velocity,Freemarker)检查资源是否存在并返回null。 因此,它们可以位于视图解析器链中的任何位置。 其他人必须是最后的(JSTL / JSP,XSLT,JSON)
因此, InternalResourceViewResolver
需要在视图解析器链中排在最后,因为无论实际资源是否存在,它都会解析视图名称。
其他一些URLBasedViewReolver是
- 使用InternalResourceViewResolver
- VelocityViewReolver
- FreeMarkerViewReolver
- ThymeleafViewResolver
- XsltViewReolver