Spring 2.5.1 MVC + Tiles 2.0.5 基本配置 當我興致高昂的從http://tiles.apache.org下載了tiles的jar包,並且按照google上搜到的一篇教程http://esffor.javaeye.com/blog/96052進行部署,卻怎麽也測試不成功。 頁麵中的和都無法正常輸出,日誌打印出TilesContainer not initialized的異常信息。
我已經注意到: <definition name="template" page="/WEB-INF/tiles/mainTemplate.jsp"> <put name="title" value="default title"/> <put name="header" value="/WEB-INF/tiles/header.jsp"/> <put name="content" value="/WEB-INF/tiles/content.jsp"/> <put name="footer" value="/WEB-INF/tiles/footer.jsp"/> definition> 在tiles2中必須改為: <definition name="template" template="/WEB-INF/tiles/mainTemplate.jsp"> <put-attribute name="title" type="string" value="default title" /> <put-attribute name="header" type="template" value="/WEB-INF/tiles/header.jsp" /> <put-attribute name="content" type="template" value="/WEB-INF/tiles/content.jsp" /> <put-attribute name="footer" type="template" value="/WEB-INF/tiles/footer.jsp" /> definition> 網絡上使用Spring mvc+tiles的案例和文章極少,我懷疑是Spring 2.0不支持tiles2,但是在tiles的官網上已經找不到更早的版本了。
幸運的是,Spring官網已經發布了2.5.1,在官網2.5.1文檔http://static.springframework.org/spring/docs/2.5.x/reference/view.html#view-tiles中,我看到了 14.3. TilesIt is possible to integrate Tiles - just as any other view technology - in web applications using Spring. The following describes in a broad way how to do this. NOTE: This section focuses on Spring's support for Tiles 2 (the standalone version of Tiles, requiring Java 5+) in the org.springframework.web.servlet.view.tiles2 package. Spring also continues to support Tiles 1.x (a.k.a. "Struts Tiles", as shipped with Struts 1.1+; compatible with Java 1.4) in the original org.springframework.web.servlet.view.tiles package. 14.3.1. DependenciesTo be able to use Tiles you have to have a couple of additional dependencies included in your project. The following is the list of dependencies you need. · Tiles version 2.0.4 or higher · Commons BeanUtils · Commons Digester · Commons Logging These dependencies are all available in the Spring distribution.
看來我的懷疑是正確的。 以下是Spring 2.5.1 MVC + Tiles 2.0.5的配置:
從sourceforge下載spring-framework-2.5.1-with-dependencies.zip,並從中拉出以下jar文件(最小化依賴) #spring 2.5.1 commons-logging.jar log4j-1.2.14.jar
spring-beans.jar spring-core.jar spring-context.jar spring-web.jar spring-webmvc.jar #with tiles 2.0.5 commons-beanutils-1.7.0.jar commons-digester-1.8.jar tiles-core-2.0.5.jar tiles-api-2.0.5.jar tiles-jsp-2.0.5.jar jstl.jar
#當然,除此之外還需要為web工程加入j2ee 1.4的Libraries和JDK1.5或以上的Libraries。 步驟: 1、最好配置好log4j,便於在配置過程中排錯。 2、修改web.xml文件 xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <servlet> <servlet-name>trainingservlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet servlet-class> <load-on-startup>1load-on-startup> servlet> <servlet-mapping> <servlet-name>trainingservlet-name> <url-pattern>*.htmurl-pattern> servlet-mapping> <welcome-file-list> <welcome-file>index.jspwelcome-file> welcome-file-list> web-app>
3、在WEB-INF目錄下增加training-servlet.xml文件,修改其內容為: xml version="1.0" encoding="UTF-8"?> DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans> <bean name="/home.htm" class="Action.TilesHomeController">bean> <bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView" /> bean> <bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer"> <property name="definitions"> <list> <value>/WEB-INF/defs/tiles-def.xmlvalue> list> property> bean> beans>
4、在WEB-INF目錄下增加defs/tiles-def.xml,其內容如下: xml version="1.0" encoding="UTF-8"?> DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN" "http://tiles.apache.org/dtds/tiles-config_2_0.dtd"> <tiles-definitions> <definition name="template" template="/WEB-INF/tiles/mainTemplate.jsp"> <put-attribute name="title" type="string" value="default title" /> <put-attribute name="header" type="template" value="/WEB-INF/tiles/header.jsp" /> <put-attribute name="content" type="template" value="/WEB-INF/tiles/content.jsp" /> <put-attribute name="footer" type="template" value="/WEB-INF/tiles/footer.jsp" /> definition> <definition name="courseDetail" extends="template"> <put-attribute name="title" value="courseDetail title" type="string" /> <put-attribute name="content" type="template" value="/WEB-INF/tiles/courseContent.jsp" /> definition> tiles-definitions> 5、在WEB-INF目錄下增加tiles目錄,並在tiles目錄下增加以下文件: mainTemplate.jsp <%...@ page session="false"%> <%...@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%> <html> <head> <title><tiles:getAsString name="title" /> title> head> <body> <table border="2" width="300" bordercolor="Gray"> <tr> <td bgcolor="Blue"> <tiles:insertAttribute name="header" /> td> tr> <tr> <td> <tiles:insertAttribute name="content" /> td> tr> <tr> <td> <tiles:insertAttribute name="footer" /> td> tr> table> body> html> header.jsp this is from header content.jsp <h1> this is from content h1> footer.jsp this is from footer courseContent.jsp
<%...@page language="java" pageEncoding="UTF-8"%> <%...@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%> this is courseContent 6、在src下增加一個java class文件:Action.TilesHomeController.java: package Action;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;
import org.springframework.validation.BindException; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.AbstractCommandController;
public class TilesHomeController extends AbstractCommandController ...{
protected ModelAndView handleRequestInternal(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception ...{ return new ModelAndView("courseDetail"); }
@Override protected ModelAndView handle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, BindException arg3) throws Exception ...{ return null; }
} 7、部署到tomcat 5.x,啟動Tomcat,訪問http://localhost:8080/exercise-2.5.1/home.htm,可看到如下網頁: this is from header | this is courseContent | this is from footer |
這就說明Spring 2.5 MVC + tiles 2配置成功了。 |