我剛開始使用Spring。我遇到了很多教程。 我看到更多的例子使用InternalResourceViewResolver
比UrlBasedViewResolver
。我查看了Spring文檔,但我無法弄清楚使用其中一種的好處。有人可以提供一些解釋嗎?InternalResourceViewResolver和UrlBasedViewResolver之間有什麼不同
回答
InternalResourceViewResolver
是UrlBasedViewResolver
的便利子類。
的JavaDoc中描述了一些InternalResourceViewResolver
加入性質可能在某些情況下是有用的:
作爲UrlBasedViewResolver的便利子類支持InternalResourceView(即Servlet和JSP)和亞類,例如JstlView。
AlwaysInclude
:控制是否正向或包括完成。
ExposeContextBeansAsAttributes
:允許上下文中的所有bean作爲請求屬性可用,這意味着它們可以從JSP中的EL引用。
ExposedContextBeanNames
:如果非null,則指定將被公開的bean的列表,而不是全部。從春季論壇
Spring支持廣泛的視圖技術。 ViewResolver可以將任何已知的受支持的視圖技術插入到您的應用程序中。
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
。您也可以前綴爲「重定向:」和「轉發:」來重定向並轉發您的請求。
InternalResourceViewResolver
- 支持InternalResourceView的UrlBasedViewResolver的子類。一個InternalResourceView
包裝JSP或相同Web應用程序的其他資源。您可以使用EL訪問JSP中的模型。
注意:有些URLBasedViewResolvers(瓷磚,速度的Freemarker)檢查是否存在資源和返回null。所以他們可以在視圖解析鏈中的任何地方。其他必須是最後一個(JSTL/JSP,XSLT,JSON)
所以InternalResourceViewResolver
需要在視圖解析器鏈中最後,因爲它解析視圖名稱是否存在實際資源。
其他一些URLBasedViewReolver s爲
- 的InternalResourceViewResolver
- VelocityViewReolver
- FreeMarkerViewReolver
- ThymeleafViewResolver
- XsltViewReolver
- 1. 支持UrlBasedViewResolver和TilesConfigurer和InternalResourceViewResolver
- 2. TaskStackBuilder.addParentStack()和TaskStackBuilder.addNextIntent()之間有什麼不同?
- 3. app.params()和router.params()之間有什麼不同?
- 4. ConfigurationManager.GetSection和Configuration.GetSection之間有什麼不同?
- 5. ComboViewer和Combo之間有什麼不同?
- 6. 「TextClock」和「DigitalClock」之間有什麼不同?
- 7. JConnection和JDBC之間有什麼不同?
- 8. *&aPtr和&* aPtr之間有什麼不同?
- 9. paintcomponent()和paintcomponents()之間有什麼不同?
- 10. GIS和GPS之間有什麼不同?
- 11. WAS和IIS之間有什麼不同?
- 12. bootstrap.css和bootstrap.min.css之間有什麼不同之處
- 13. 觸發器之後和之間有什麼不同?
- 14. JBI和SCA之間有什麼不同/相似之處
- 15. 擴展和固有之間有什麼不同
- 16. text/template和text/plain之間有什麼不同?
- 17. Zookeeper $狀態中的isAlive()和isConnected()之間有什麼不同? (3.4.5)
- 18. 返回View :: make()和返回Response :: view()之間有什麼不同?
- 19. Vert.x WebSocket的writeBinaryMessage()和write()之間有什麼不同?
- 20. 連續if和nested之間有什麼不同?
- 21. Backend和Magento的前端緩存之間有什麼不同
- 22. 改裝:@Field和@Body之間有什麼不同
- 23. @In(注入)和@Out之間有什麼不同(注出)在SEAM
- 24. 爲什麼UnitCount在PackageInfoTable和TPackageTypeInfo之間有所不同?
- 25. Javascript中的Ajax和Web Worker之間有什麼不同?
- 26. 這些方法和創建之間有什麼不同?
- 27. DOJO:JsonQueryRestStore和QueryReadStore之間的設計有什麼不同
- 28. MVA和ASP.NET Web表單之間有什麼不同?
- 29. __declspec(restrict)和__declspec(noalias)之間有什麼不同
- 30. C++中多線程的join()和detach()之間有什麼不同?