您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > springmvc集成表现层
主题:springmvc集成表现层内容部分:Spring之所以出色的一个原因就是将表现层从MVC的框架中分离出来。例如,通过配置就可以让Velocity或者XSLT来代替已经存在的JSP页面。本章介绍和Spring集成的一些主流表现层技术,并简要描述如何集成新的表现层。这里假设你已经熟悉第12.5节“视图与视图解析”,那里介绍了将表现层集成到MVC框架中的基本知识。和JSP&JSTL一起使用SpringSpring为JSP和JSTL提供了一组方案(顺便说一下,它们都是最流行的表现层技术之一)。使用JSP或JSTL需要使用定义在WebApplicationContext里的标准的视图解析器。此外,你当然也需要写一些JSP页面来显示页面。这里描述一些Spring为方便JSP开发而提供的额外功能。视图解析器就象和Spring集成的其他表现层技术一样,对于JSP页面你需要一个视图解析器来解析。最常用的JSP视图解析器是InternalResourceViewResolver和ResourceBundleViewResolver。它们被定义在WebApplicationContext里:#TheResourceBundleViewResolver:beanid=viewResolverclass=org.springframework.web.servlet.view.ResourceBundleViewResolverpropertyname=basenamevalueviews/value/property/bean#Andasamplepropertiesfileisuses(views.propertiesinWEB-INF/classes):welcome.class=org.springframework.web.servlet.view.JstlViewwelcome.url=/WEB-INF/jsp/welcome.jspproductList.class=org.springframework.web.servlet.view.JstlViewproductList.url=/WEB-INF/jsp/productlist.jsp你可以看到ResourceBundleViewResolver需要一个属性文件来把视图名称映射到1)类和2)URL。通过ResolverBundleViewResolver,你可以用一个解析器来解析两种类型的视图。beanid=viewResolverclass=org.springframework.web.servlet.view.InternalResourceViewResolverpropertyname=viewClassvalueorg.springframework.web.servlet.view.JstlView/value/propertypropertyname=prefixvalue/WEB-INF/jsp//value/propertypropertyname=suffixvalue.jsp/value/property/beanInternalResourceBundleViewResolver可以配置成使用JSP页面。作为好的实现方式,强烈推荐你将JSP文件放在WEB-INF下的一个目录中,这样客户端就不会直接访问到它们。普通JSP页面和JSTL当你使用Java标准标签库(JavaStandardTagLibrary)时,你必须使用一个特殊的类,JstlView,因为JSTL在使用象I18N这样的功能前需要一些准备工作。其他有助于开发的标签正如前面几章所提到的,Spring可以将请求参数绑定到命令对象上。为了更容易地开发含有数据绑定的JSP页面,Spring定义了一些专门的标签。所有的Spring标签都有HTML转义功能来决定是否使用字符转义。标签库描述符(TLD)和库本身都包含在spring.jar里。Tiles象其他表现层技术一样,可以集成在使用Spring的Web应用中。下面大致描述一下过程。所需的库文件为了使用Tiles,你必须将需要的库文件包含在你的项目中。下面列出了这些库文件。strutsversion1.1commons-beanutilscommons-digestercommons-loggingcommons-lang这些文件以从Spring中获得。如何集成Tiles为了使用Tiles,你必须用定义文件(definitionfile)来配置它(有关于定义(definition)和其他Tiles概念,请参考)。在Spring中,这些都可以使用TilesConfigurer在完成。下面是ApplicationContext配置的片段。beanid=tilesConfigurerclass=org.springframework.web.servlet.view.tiles.TilesConfigurerpropertyname=factoryClassvalueorg.apache.struts.tiles.xmlDefinition.I18nFactorySet/value/propertypropertyname=definitionslistvalue/WEB-INF/defs/general.xml/valuevalue/WEB-INF/defs/widgets.xml/valuevalue/WEB-INF/defs/administrator.xml/valuevalue/WEB-INF/defs/customer.xml/valuevalue/WEB-INF/defs/templates.xml/value/list/property/bean你可以看到,有五个文件包含定义,它们都存放在WEB-INF/defs目录中。当初始化WebApplicationContext时,这些文件被读取,并且初始化由factoryClass属性指定的定义工厂(definitonsfactory)。在这之后,你的SpringWeb应用就可以使用在定义文件中的tilesincludes内容。为了使用这些,你必须得和其他表现层技术一样有一个ViewResolver。有两种可以选择,InternalResourceViewResolver和ResourceBundleViewResolver。InternalResourceViewResolverInternalResourceViewResolver用viewClass属性指定的类实例化每个它解析的视图。ResourceBundleViewResolver必须提供给ResourceBundleViewResolver一个包含viewnames和viewclassess属性的属性文件。beanid=viewResolverclass=org.springframework.web.servlet.view.ResourceBundleViewResolverpropertyname=basenamevalueviews/value/property/bean...welcomeView.class=org.springframework.web.servlet.view.tiles.TilesViewwelcomeView.url=welcome(bthisisthenameofadefinition/b)vetsView.class=org.springframework.web.servlet.view.tiles.TilesViewvetsView.url=vetsView(bagain,thisisthenameofadefinition/b)findOwnersForm.class=org.springframework.web.servlet.view.JstlViewfindOwnersForm.url=/WEB-INF/jsp/findOwners.jsp...你可以发现,当使用ResourceBundleViewResolver,你可以使用不同的表现层技术。Velocity是Jakarta项目开发的表现层技术。有关与Velocity的详细资料可以在找到。这一部分介绍如何集成Velocity到Spring中。所需的库文件在使用Velocity之前,你需要在你的Web应用中包含两个库文件,velocity-1.x.x.jar和commons-collections.jar。一般它们放在WEB-INF/lib目录下,以保证J2EE服务器能够找到,同时把它们加到你的classpath中。当然假设你也已经把spring.jar放在你的WEB-INF/lib目录下!最新的Velocity和commnonscollections的稳定版本由Spring框架提供,可以从/lib/velocity和/lib/jakarta-commons目录下获取。分发器(DispatcherServlet)上下文你的SpringDispatcherServlet配置文件(一般是WEB-INF/[servletname]-servlet.xml)应该包含一个视图解析器的bean定义。我们也可以再加一个bean来配置Velocity环境。我指定DispatcherServlet的名字为‘frontcontroller’,所以配置文件的名字反映了DispatcherServlet的名字下面的示例代码显示了不同的配置文件!--===========================================================--!--Viewresolver.Requiredbywebframework.--!--===========================================================--!--ViewresolverscanbeconfiguredwithResourceBundlesorXMLfiles.IfyouneeddifferentviewresolvingbasedonLocale,youhavetousetheresourcebundleresolver,otherwiseitmakesnodifference.IsimplyprefertokeeptheSpringconfigsandcontextsinXML.SeeSpringdocumentationformoreinfo.--beanid=viewResolverclass=org.springframework.web.servlet.view.XmlViewResolverpropertyname=cachevaluetrue/value/propertypropertyname=locationvalue/WEB-INF/frontcontroller-views.xml/value/property/bean!--===========================================================--!--Velocityconfigurer.--!--===========================================================--!--ThenextbeansetsuptheVelocityenv
本文标题:springmvc集成表现层
链接地址:https://www.777doc.com/doc-2859803 .html