Spring为JSP和JSTL这些view层技术提供了几个即取即用的解决方案。使用JSP和JSTL的话,采用WebApplicationContext
中定义的普通视图解析器就好;当然,还得自己写一些实际做渲染的JSP页面。本章介绍了一些Spring提供的用于简化JSP开发的额外特性。
与你在Spring中采用的任何其他视图技术一样,使用JSP方式的话你需要一个用来解析你的视图的视图解析器,常用的是在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
需要一个属性文件来定义view名到1) class 2) URL的映射。使用ResourceBundleViewResolver
,你可以只使用一个解析器来混用不同类型的视图技术。
<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时可以配置一个InternalResourceBundleViewResolver
。作为一个最佳实践,我们强烈推荐你用 WEB-INF
下的一个目录来存放JSP文件,以避免被客户端直接访问。
使用JSTL时,你必须使用一个特别的view类 JstlView
,因为JSTL需要一些准备工作,然后像i18N这样的特性才能工作。
前面的章节中提到过,Spring提供了从请求参数到命令对象的数据绑定。为了简化与数据绑定特性配合使用的JSP页面的开发,Spring提供了一些标签让事情变得更简单。这些标签都提供了 html escaping 的特性,能够打开或关闭字符转码的功能。
spring.jar
包含了标签库描述符(TLD),就好像它自己的tag。关于每个tag的更多资料请参阅附录附录 D, spring.tld。