14.2. JSP和JSTL

Spring为JSP和JSTL这些view层技术提供了几个即取即用的解决方案。 使用JSP和JSTL的话,采用 WebApplicationContext 中定义的普通视图解析器即可;当然,还需要自行编写一些实际做渲染的JSP页面。 本章介绍了一些Spring提供的用于简化JSP开发的额外特性。

14.2.1. 视图解析器

与在Spring中采用的任何其他视图技术一样,使用JSP方式需要一个用来解析视图的视图解析器, 常用的是在WebApplicationContext 中定义的InternalResourceViewResolverResourceBundleViewResolver

				
					<!-- 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文件,从而避免被客户端直接访问。

14.2.2.  'Plain-old' JSPs versus JSTL 'Plain-old' JSP与JSTL

使用JSTL时,必须使用一个特别的view类JstlView ,因为JSTL需要一些准备工作,然后像i18N这样的特性才能工作。

14.2.3. 帮助简化开发的额外的标签

前面的章节中提到过,Spring提供了从请求参数到命令对象的数据绑定。为了简化与数据绑定特性配合使用的JSP页面的开发,Spring提供了一些标签让事情变得更简单。这些标签都提供了 html escaping的特性,能够打开或关闭字符转码的功能。

spring.jar 包含了标签库描述符(TLD),就好像它自己的tag。关于每个tag的更多资料请参阅附录附录 D, spring.tld