在SpringMVC中使用Tiles还是很方便的,这里做一个简单的DEMO。
首先需要在项目的类库中添加相关的jar文件,这里使用的是Maven管理,因此,只需要添加pom即可.
代码如下 | 复制代码 |
<!-- Tiles --> <dependency> <groupId>commons-digester</groupId> <artifactId>commons-digester</artifactId> <version>2.1</version> </dependency> <dependency> <groupId>org.apache.tiles</groupId> <artifactId>tiles-core</artifactId> <version>3.0.1</version> </dependency> <dependency> <groupId>org.apache.tiles</groupId> <artifactId>tiles-api</artifactId> <version>3.0.1</version> </dependency> <dependency> <groupId>org.apache.tiles</groupId> <artifactId>tiles-jsp</artifactId> <version>3.0.1</version> </dependency> |
添加完依赖的jar包之后,接下来需要配置SpringMVC使用Tiles的视图解析,这里使用的是Tiles3 ,因此需要Spring版本在3.2之上,低版本的只支持到Tiles2.
代码如下 | 复制代码 |
<!-- 视图解析--> <bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer"> |
这里配置了两个视图解析bean,当Tiles配置中没有匹配的规则时,使用SpringMVC默认的匹配规则。
代码如下 | 复制代码 |
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN" "http://tiles.apache.org/dtds/tiles-config_3_0.dtd"> <tiles-definitions> <!-- 前端页面模板 --> <definition name="template_page" template="/WEB-INF/templates/page.jsp"></definition> <definition name="template_base" template="/WEB-INF/templates/base.jsp"></definition> <!-- 引用整体模板 视图名 + .page --> <definition name="*.page" extends="template_page" > <put-attribute name="body" value="/WEB-INF/views/{1}.jsp" /> </definition> <definition name="*/*.page" extends="template_page"> <put-attribute name="body" value="/WEB-INF/views/{1}/{2}.jsp" /> </definition> <definition name="*/*/*.page" extends="template_page"> <put-attribute name="body" value="/WEB-INF/views/{1}/{2}/{3}.jsp" /> </definition> <definition name="*/*/*/*.page" extends="template_page"> <put-attribute name="body" value="/WEB-INF/views/{1}/{2}/{3}/{4}.jsp" /> </definition> <!-- 引用基本模板 视图名 + .base --> <definition name="*.base" extends="template_base" > <put-attribute name="body" value="/WEB-INF/views/{1}.jsp" /> </definition> <definition name="*/*.base" extends="template_base"> <put-attribute name="body" value="/WEB-INF/views/{1}/{2}.jsp" /> </definition> <definition name="*/*/*.base" extends="template_base"> <put-attribute name="body" value="/WEB-INF/views/{1}/{2}/{3}.jsp" /> </definition> <definition name="*/*/*/*.base" extends="template_base"> <put-attribute name="body" value="/WEB-INF/views/{1}/{2}/{3}/{4}.jsp" /> </definition> </tiles-definitions> |
上面的Tiles配置文件中,配置了两个页面的模板,当Spring返回视图名为.page或者是.base后缀时,就会匹配到相应的模板。从这里可以看到,Tiles支持通配符匹配的,当然,你也可以使用正则表达式进行规则的匹配或者是Mvel等语言进行规则匹配。
在模板文件中,使用tiles的标签完成模板的创建。
如page.
代码如下 | 复制代码 |
<%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %> <html> <head> ... </head> <body> <tiles:insertAttribute name="body" /> </body> </html> |
最后,在控制器中,只需要返回的视图名为.page就会自动的使用该模板了。
代码如下 | 复制代码 |
@RequestMapping("login") public String login(HttpServletRequest req, HttpServletResponse resp, HttpSession session){ return "login.page"; } |