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。