tiles3 基础使用及与spring mvc集成

1.简介
    Tiles 是一种JSP布局框架,主要目的是为了将复杂的jsp页面作为一个的页面的部分机能,
    然后用来组合成一个最终表示用页面用的,这样的话,增加代码重用率的同时,便于对页面的
    各个机能的变更及维护。
2.tiles与spring mvc的集成
    web.xml
            <!--spring mvc的配置-->
            <servlet>
                <description>Spring MVC</description>
                <servlet-name>springMVC</servlet-name>
                <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
                <init-param>
                    <param-name>contextConfigLocation</param-name>
                    <param-value>classpath:/*配置文件路径*/</param-value>
                </init-param>
                <load-on-startup>0</load-on-startup>
            </servlet>
            <servlet-mapping>
                <servlet-name>springMVC</servlet-name>
                <url-pattern>*.html/*过滤路径*/</url-pattern>
            </servlet-mapping>
    mvc.xml
        <bean id="viewResolver"
                  class="org.springframework.web.servlet.view.UrlBasedViewResolver">
                  <!--如果使用了其他的视图解析 该属性用于定义解析顺序-->
                <property name="order" value="1" />
                <property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView">
                </property>
            </bean>
            <!--加载tiles配置文件 -->
            <bean id="tilesConfigurer"
                  class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
                <property name="definitions">
                    <list>
                        <!--配置文件路径-->
                        <value>classpath:tiles/tiles.xml</value>
                    </list>
                </property>
                <!--根据tiles中的definiton 名称定义bean -->
                <property name="preparerFactoryClass"
                          value="org.springframework.web.servlet.view.tiles3.SpringBeanPreparerFactory"/>
            </bean>
        </bean>
    tiles.xml
        <tiles-definitions>
             <!--定义一个公共的布局模板模板-->
            <definition name="layout" template="/layout.jsp">
                <put-attribute name="header" value="/header.jsp" />
                <put-attribute name="body" value="/body.jsp" />
                <put-attribute name="footer" value="/footer.jsp" />
            </definition>
            <!-- 相同布局,展示body不同-->
            <definition name="tiles.layout.extend" extends="layout">
                <put-attribute name="body" value="/extend/body.jsp" />
            </definition>
            <!--使用级联-->
            <definition name="tiles.layout.extend.body" template="/body.jsp">
                <put-attribute name="model" value="/model.jsp" />
            </definition>
            <definition name="tiles.layout.extend" template="/body.jsp">
                <put-attribute name="model" value="tiles.layout.extend.body" />
            </definition>
            <!--级联的另一种写法-->
            <definition name="tiles.layout.extend" template="/body.jsp">
                <put-attribute name="model">
                    <definition template="/model.jsp">
                    </definition>
                </put-attribute>
            </definition>
            <!--参数化配置 -->
            <definition name="tiles.layout.*.*" extends="layout.{1}">
                <put-attribute name="body" value="/jsp/{1}/{2}.jsp"/>
            </definition>
            <!--EL表达式-->
            <definition name="tiles.layout" extends="${layout}">
                <put-attribute name="body" value="/jsp/${model}.jsp"/>
            </definition>
        </tiles-definitions>
    layout.jsp
        <!--可以根据实际业务需求 定义布局-->
        <%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>
        <tiles:insertAttribute  name="header" />
        <tiles:insertAttribute name="body"/>
        <tiles:insertAttribute  name="footer" />
    TilesController.java
        import org.springframework.stereotype.Controller;
        import org.springframework.web.bind.annotation.RequestMapping;

        @Controller
        public class TilesController {

            @RequestMapping("tiles")
            public String checkStu(){
                /*返回值是 definition标签的name属性*/
                return "tiles.layout.extend";
            }
        }
3.个人使用总结
    tiles 能够大量的减少重复代码的书写,并且保证网站布局风格的一致性,特别是在大量页面需要添加或修改相同的东西的情况下,能够让我们很快的完成工作。使用范围主要在拥有大量相同布局或相似布局的网站。

你可能感兴趣的:(tiles)