?
This document uses PHP Chinese website manual Release
Spring為JSP和JSTL這些view層技術(shù)提供了幾個(gè)即取即用的解決方案。 使用JSP和JSTL的話,采用
WebApplicationContext
中定義的普通視圖解析器即可;當(dāng)然,還需要自行編寫(xiě)一些實(shí)際做渲染的JSP頁(yè)面。
本章介紹了一些Spring提供的用于簡(jiǎn)化JSP開(kāi)發(fā)的額外特性。
與在Spring中采用的任何其他視圖技術(shù)一樣,使用JSP方式需要一個(gè)用來(lái)解析視圖的視圖解析器,
常用的是在WebApplicationContext
中定義的InternalResourceViewResolver
和
ResourceBundleViewResolver
。
<!-- the
ResourceBundleViewResolver
-->
<bean id="viewResolver" class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
<property name="basename" value="views"/>
</bean>
# And a sample properties file is uses
(views.properties in WEB-INF/classes):
welcome.class=org.springframework.web.servlet.view.JstlView
welcome.url=/WEB-INF/jsp/welcome.jsp
productList.class=org.springframework.web.servlet.view.JstlView
productList.url=/WEB-INF/jsp/productlist.jsp
正如你所看到的,ResourceBundleViewResolver
需要一個(gè)屬性文件來(lái)定義view名稱(chēng)到1) class 2) URL的映射。使用
ResourceBundleViewResolver
,可以只使用一個(gè)解析器來(lái)混用不同類(lèi)型的視圖技術(shù)。
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean>
如上例所示, 用JSP時(shí)可以配置一個(gè)
InternalResourceBundleViewResolver
。 作為一個(gè)最佳實(shí)踐,我們強(qiáng)烈推薦你用
WEB-INF
下的一個(gè)目錄來(lái)存放JSP文件,從而避免被客戶(hù)端直接訪問(wèn)。
使用JSTL時(shí),必須使用一個(gè)特別的view類(lèi)JstlView
,因?yàn)镴STL需要一些準(zhǔn)備工作,然后像i18N這樣的特性才能工作。
前面的章節(jié)中提到過(guò),Spring提供了從請(qǐng)求參數(shù)到命令對(duì)象的數(shù)據(jù)綁定。為了簡(jiǎn)化與數(shù)據(jù)綁定特性配合使用的JSP頁(yè)面的開(kāi)發(fā),Spring提供了一些標(biāo)簽讓事情變得更簡(jiǎn)單。這些標(biāo)簽都提供了 html escaping的特性,能夠打開(kāi)或關(guān)閉字符轉(zhuǎn)碼的功能。
spring.jar
包含了標(biāo)簽庫(kù)描述符(TLD),就好像它自己的tag。關(guān)于每個(gè)tag的更多資料請(qǐng)參閱附錄附錄?D, spring.tld
。