您的位置:首页 > 运维架构 > Apache

springmvc整合Apache tiles基于java配置的demo

2017-11-30 13:01 295 查看

springmvc整合apache tiles

springmvc整合Apache tiles,虽然是个很简单的东西,但是由于自己太菜,用了好久。

首先是项目的构建,用的是gradle,项目构建主要的问题项目依赖用到了slf4j,个人感觉这个包依赖比较奇怪,版本稍微不对就会出问题,因为比较懒,直接用以前的项目依赖配置,然后新加进这个包的时候就各种问题,看着依赖树眼镜都快花了,最后总算弄好了。

代码资源地址:http://download.csdn.net/download/qq_36666651/10139135

https://github.com/wkcaeser/SpringApacheTiles

以下是我的gradle依赖配置,有些事不必要的,主要看下面那几个包:

group 'SpringApacheTiles'
version '1.0-SNAPSHOT'

apply plugin: 'java'
apply plugin: 'war'

sourceCompatibility = 1.8

def tomcatVersion = "9.0.0.M21"
def jstlVersion = "1.2"
def springVersion = "4.3.8.RELEASE"
def mybatisVersion = "3.4.4"
def mybatisSpringVersion = "1.3.1"
def mysqlConnectorVersion = "6.0.6"
def dbcpVersion = "2.1.1"
def log4jVersion = "2.10.0"
def gsonVersion = "2.8.1"
def jjwtVersion = "0.7.0"
def fileupload = "1.3.3"
def commonsIo = "2.5"

repositories {
mavenCentral()
}

dependencies {
testCompile group: 'junit', name: 'junit', version: '4.11'

compile "org.apache.tomcat:tomcat-servlet-api:$tomcatVersion"
compile "org.apache.tomcat:tomcat-jsp-api:$tomcatVersion"
compile "javax.servlet:jstl:$jstlVersion"
compile "org.springframework:spring-webmvc:$springVersion"
compile "org.springframework:spring-jdbc:$springVersion"
compile "org.mybatis:mybatis:$mybatisVersion"
compile "org.mybatis:mybatis-spring:$mybatisSpringVersion"
compile "mysql:mysql-connector-java:$mysqlConnectorVersion"
compile "org.apache.commons:commons-dbcp2:$dbcpVersion"
compile "org.apache.logging.log4j:log4j-core:$log4jVersion"
compile "com.google.code.gson:gson:$gsonVersion"
compile "io.jsonwebtoken:jjwt:$jjwtVersion"
compile "commons-io:commons-io:$commonsIo"
compile "commons-fileupload:commons-fileupload:$fileupload"

// https://mvnrepository.com/artifact/log4j/log4j compile group: 'log4j', name: 'log4j', version: '1.2.14'

compile "org.apache.tiles:tiles-core:3.0.1"
compile "org.apache.tiles:tiles-api:3.0.1"
compile "org.apache.tiles:tiles-jsp:3.0.1"

// https://mvnrepository.com/artifact/org.slf4j/slf4j-api compile group: 'org.slf4j', name: 'slf4j-api', version: '1.5.8'
// https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12 compile group: 'org.slf4j', name: 'slf4j-log4j12', version: '1.5.8'

}


依赖好了以后配置相关的bean,首先配置TilesConfigurer来解析Tile定义,代码如下:

@Bean
public TilesConfigurer tilesConfigurer(){
TilesConfigurer tilesConfigurer = new TilesConfigurer();
tilesConfigurer.setDefinitions("/WEB-INF/views/apacheTiles/tiles.xml");
tilesConfigurer.setCheckRefresh(true);
return tilesConfigurer;
}


注意这个配置文件的位置要和jsp所在的位置在一个根目录下,例如jsp在webapp目录下,那么这个文件也要在此目录。如果在resources目录下,同样的也只查询到此目录下的文件。

然后配置TilesViewResolver,代码如下:

@Bean
public ViewResolver viewResolver(){
return new TilesViewResolver();
}


这里需要注意的是,如果你还配置InternalResourceViewResolver视图解析器,那么这里就需要指定优先级,不然在视图解析的时候回出错。

然后就配置tiles的配置文件了,如下:

<?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="tiles" template="/WEB-INF/views/tiles.jsp">
<put-attribute name="header" value="/WEB-INF/views/header.jsp"/>
<put-attribute name="base" value="/WEB-INF/views/welcome.jsp"/>
<put-attribute name="footer" value="/WEB-INF/views/footer.jsp"/>
</definition>
</tiles-definitions>


这只是一个简单的例子,definition是可以继承的,将template改为extens,值改为对应tiles模板的名称就可以定制你自己的模板,模板里面添加的attribute可以继承也可以覆盖,不处理就是继承,同名会覆盖。

然后在jsp页面引入就可以了:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="t"%>
<html>
<head>
<title>Title</title>
</head>
<body>
<div>
<t:insertAttribute name="header"/>
</div>
<div>
<t:insertAttribute name="base"/>
</div>
<div>
<t:insertAttribute name="footer"/>
</div>
</body>
</html>


jsp要注意引入相应的文档定义:

<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="t"%>


这样springmvc和apache tiles的整合就完成了。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐