注:本篇文章的SpringBoot版本为2.1.1
SpringBoot使用JSP技术
Windows系统的IDEA中,可使用快捷键Ctrl+Shift+Alt+S
,打开Project Structure,新增webapp存放jsp文件
使用内嵌的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
网友评论