看出來了,整合不同的框架就不停的配置,導包,缺一個就夠你折騰半天的,沒辦法,誰叫人家每次升級都會與舊版本有不同的配置呢。時間都浪費在配置上了。估計下次用tiles3又會有所不同了。(首先demo項目來自spring in action 第三版第七章練習)
1.首先是web.xml,這裏只要配置好springMVC就可以了,像一些教程還配置了一堆tiles的,現在最簡
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>springmvc</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!--spring mvc初始化配置文件,自動加載spitter-servlet.xml-->
<servlet>
<servlet-name>spitter</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spitter</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
2.配置spitter-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
<!--默認註解映射-->
<mvc:annotation-driven/>
<!--對靜態資源文件的訪問,
以/resources開頭的請求,由/resources/底下的文件提供服務
-->
<mvc:resources mapping="/resources/**" location="/resources" cache-period="31556926"/>
<mvc:default-servlet-handler/>
<!--spring 組件掃描配置 -->
<context:component-scan base-package="com.sam.controller"/>
<context:component-scan base-package="com.sam.service"/>
<!-- ViewResolver -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/><!--jsp使用了jstl需要將原來默認的InternalResourceView替換爲JstlView-->
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
<!-- 文件解析器-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" p:maxUploadSize="500000"></bean>
<!--集成Apache tiles視圖-->
<bean id="tilesviewResolver"
class="org.springframework.web.servlet.view.tiles2.TilesViewResolver">
<property name="order" value="0"></property>
</bean>
<bean class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
<property name="definitions">
<list>
<value>/WEB-INF/jsp/**/views.xml</value><!--定義tiles佈局-->
</list>
</property>
<property name="preparerFactoryClass"
value="org.springframework.web.servlet.view.tiles2.SpringBeanPreparerFactory"/>
</bean>
</beans>
3.配置文件只要這樣就行了,關鍵是jar的導入才讓人煩哪,建議分開導入
springMVC相關的jar包
jstl.jar跟standard.jar因爲jsp頁面jstl標籤需要
tiles相關的jar包,(可以到Apache官網下載)這裏是2.0的,3.0的又有點不一樣
框中選中的從官網下載的2.0版本lib裏沒有,會報錯,所以從3.0的裏面拷貝過來,注意上圖中的commons也是必須的,缺少哪個就到Apache去下載都有
現在就可以使用tiles了。
我們在spitter-servlet.xml裏面設置了tiles配置文件的位置爲/WEB-INF/jsp/**/views.xml,即jsp文件夾下所有views.xml文件
views.xml
<!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 2.1//EN"
"http://tiles.apache.org/dtds/tiles-config_2_1.dtd">
<tiles-definitions>
<definition name="template" template="/WEB-INF/jsp/main_template.jsp">
<put-attribute name="top" value="/WEB-INF/jsp/tiles/spittleForm.jsp"></put-attribute>
<put-attribute name="side" value="/WEB-INF/jsp/tiles/signinsignup.jsp"></put-attribute>
</definition>
<definition name="home" extends="template"><!--首頁-->
<put-attribute name="content" value="/WEB-INF/jsp/home.jsp"></put-attribute>
</definition>
<definition name="spittles/list" extends="template"><!--特定spitter的spittle列表展示頁-->
<put-attribute name="content" value="/WEB-INF/jsp/spittles/list.jsp"></put-attribute>
</definition>
<definition name="spittles/edit" extends="template"><!--特定spitter的表單提交頁-->
<put-attribute name="content" value="/WEB-INF/jsp/spittles/edit.jsp"></put-attribute>
</definition>
<definition name="spittles/view" extends="template"><!--特定spitter的個人信息展示頁-->
<put-attribute name="content" value="/WEB-INF/jsp/spittles/view.jsp"></put-attribute>
</definition>
</tiles-definitions>
可以看出,我們先定義了一個Template複用模板,在底下的首頁跟其他特定的頁面中,繼承Template就可以複用到上面的公共片段了。