15.2.JSP和JSTL
15.2. JSP和JSTL
Spring为JSP和JSTL这些view层技术提供了几个即取即用的解决方案。使用JSP和JSTL的话,采用WebApplicationContext中定义的普通视图解析器就好;当然,还得自己写一些实际做渲染的JSP页面。本章介绍了一些Spring提供的用于简化JSP开发的额外特性。
15.2.1. 视图解析器
与你在Spring中采用的任何其他视图技术一样,使用JSP方式的话你需要一个用来解析你的视图的视图解析器,常用的是在WebApplicationContext中定义的 InternalResourceViewResolver
和 ResourceBundleViewResolver
。
# The ResourceBundleViewResolver: <bean id="viewResolver"> <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"> <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文件,以避免被客户端直接访问。
15.2.2. 'Plain-old' JSPs versus JSTL 'Plain-old' JSP与JSTL
使用JSTL时,你必须使用一个特别的view类 JstlView
,因为JSTL需要一些准备工作,然后像i18N这样的特性才能工作。
15.2.3. 帮助简化开发的额外的标签
前面的章节中提到过,Spring提供了从请求参数到命令对象的数据绑定。为了简化与数据绑定特性配合使用的JSP页面的开发,Spring提供了一些标签让事情变得更简单。这些标签都提供了 html escaping 的特性,能够打开或关闭字符转码的功能。
spring.jar
包含了标签库描述符(TLD),就好像它自己的tag。关于单个tags的更多资料 可以在线查找: http://www.springframework.org/docs/taglib/index.html。