SpringBoot2+JSP+SiteMesh3实现页面“装饰

2019-01-09  本文已影响0人  DeppWang

注:本篇文章的SpringBoot版本为2.1.1

SpringBoot使用JSP技术

Windows系统的IDEA中,可使用快捷键Ctrl+Shift+Alt+S,打开Project Structure,新增webapp存放jsp文件

image.png image.png

使用内嵌的tomcat容器来运行的话,需要在pom.xml文件新增下面这3个依赖:

<!--WEB支持-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!--jsp页面使用jstl标签-->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
</dependency>

<!--用于编译jsp-->
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
</dependency>

在application.properties中配置返回jsp文件的路径和后缀

spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

使用SiteMesh3实现页面装饰

新增依赖

<!--sitemesh实现页面装饰-->
<dependency>
    <groupId>org.sitemesh</groupId>
    <artifactId>sitemesh</artifactId>
    <version>3.0.1</version>
</dependency>

实现ConfigurableSiteMeshFilter的applyCustomConfiguration方法,来配置装饰路径

public class WebSiteMeshFilter extends ConfigurableSiteMeshFilter {

    @Override
    protected void applyCustomConfiguration(SiteMeshFilterBuilder builder) {
        builder.addDecoratorPath("/task/index", "/WEB-INF/views/decorator.jsp");
//        也可使用Controller请求映射
//        builder.addDecoratorPath("/task/index", "/task/decorator").addExcludedPath("/task/decorator");
    }
}

自定义Config,将装饰路径注入容器。相当于在xml文件中配置<bean></bean>。

SpringBoot2废弃了WebMvcConfigurerAdapter ,直接使用WebMvcConfigurer

@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Bean
    public FilterRegistrationBean siteMeshFilter() {
        FilterRegistrationBean filter = new FilterRegistrationBean();
        WebSiteMeshFilter siteMeshFilter = new WebSiteMeshFilter();
        filter.setFilter(siteMeshFilter);
        return filter;
    }
}

效果如下图:

image.png

源码地址:https://github.com/DeppWang/SpringBoot-Demo/tree/master/springboot-sitemesh

总结

要在SpringBoot2中使用SiteMesh,就不得不使用JSP或者FreeMarker,如果想要使用Thymeleaf,同时实现页面装饰,暂时还没有找到这样的实现方法。

参考网址

Spring Boot干货系列:(五)开发Web应用之JSP篇:http://tengj.top/2017/03/13/springboot5/
springboot2试用2模板sitemesh:http://blog.sina.com.cn/s/blog_537517170102xve4.html
上一篇 下一篇

猜你喜欢

热点阅读