整合步驟
1、增加tiles的jar包(包含tld文件)
<dependency> <groupId>org.apache.tiles</groupId> <artifactId>tiles-extras</artifactId> <version>3.0.5</version> </dependency>
2、配置tiles的bean,貌似需要增加到web服務器創建時即創建的spring配置文件中,即需要配置到web.xml文件中</init-param> 為<load-on-startup> 的。如下的dispatcher-servlet.xml文件中配置bean
<servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value> <!-- dispatcher-servlet.xml文件路徑 --> classpath:spring/dispatcher-servlet.xml </param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>
3、 在dispatcher-servlet.xml中下增加tiles配置bean的代碼。其中/WEB-INF/tiles/tiles-definitions.xml 為tiles配置文件的路徑。
<!-- Tiles 配置相關bean --> <bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer"> <property name="definitions"> <list> <value>/WEB-INF/tiles/tiles-definitions.xml</value> </list> </property> </bean> <bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView" /> </bean>
4、編寫配置文件tiles配置文件 tiles-definitions.xml
其中defaultTemplate為配置首頁的定義,。
下面的<definition name="*" 使用了通配符,結合<put-attribute name="body" value="/WEB-INF/views/{1}.jsp" /> 這個{1} 即代表請求的原始頁面,比如http://localhost:8080/slark/blog ,則這里{1}會被替換為blog,即相當於在原blog.jsp頁面下增加了一個footer部分。
<tiles-definitions> <definition name="defaultTemplate" template="/WEB-INF/tiles/tmplate/defaultLayout.jsp"> <put-attribute name="nav" value="/WEB-INF/tiles/tmplate/nav.jsp" /> <put-attribute name="body" value="/WEB-INF/tiles/tmplate/body.jsp" /> <put-attribute name="footer" value="/WEB-INF/tiles/tmplate/footer.jsp" /> </definition> <definition name="*" template="/WEB-INF/tiles/tmplate/commonLayout.jsp"> <put-attribute name="body" value="/WEB-INF/views/{1}.jsp" /> <put-attribute name="footer" value="/WEB-INF/tiles/tmplate/footer.jsp" /> </definition> </tiles-definitions>
配置模板頁面,下圖為commonLayout.jsp 的一部分。body即為本來要請求的頁面,如上例中的blog.jsp,然后footer部分為tmplate文件夾中預先寫好的可重用的組件頁面footer.jsp
<body> <div> <div> <tiles:insertAttribute name="body" /> </div> <div> <tiles:insertAttribute name="footer" /> </div> </div> </body>