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

来源:互联网 发布:pscc2017 mac版本下载 编辑:程序博客网 时间:2024/05/29 14:20

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.8def 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的整合就完成了。
这里写图片描述

原创粉丝点击