Sitemesh 소개
Sitemesh는 웹 페이지 레이아웃, 데코레이션 및 기존 웹 애플리케이션과의 통합을 기반으로 하는 프레임워크입니다. 일관된 탐색 모음, 일관된 배너, 일관된 저작권 등과 같이 페이지 프로젝트 수가 많은 프로젝트에서 일관된 페이지 레이아웃 및 모양을 만드는 데 도움이 될 수 있습니다.
SiteMesh는 Servlet 필터를 기반으로 하며 응답을 가로채서 클라이언트에 전달하기 전에 장식합니다.
spring boot는 sitemesh를 통합합니다
통합을 위해 수행할 작업은 매우 간단합니다.
1 sitemesh.jar 패키지를 소개합니다
2. 구성 클래스와 필터 클래스를 추가합니다
3.
2.1.sitemesh.jar 패키지를 소개합니다.
maven pom 파일에 소개합니다:
<dependency> <groupId>org.sitemesh</groupId> <artifactId>sitemesh</artifactId> <version>3.0.1</version> </dependency>
구성 클래스 및 필터 클래스
구성 클래스는 다음과 같습니다.
import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; //生效配置,使之就像传统项目里sping的xml配置文件一样 @Configuration public class WebConfig extends WebMvcConfigurerAdapter{ //注册成bean,就像传统项目spring配置文件中的<bean>标签 @Bean public FilterRegistrationBean siteMeshFilter(){ FilterRegistrationBean fitler = new FilterRegistrationBean(); //实例化一个过滤器类 WebSiteMeshFilter siteMeshFilter = new WebSiteMeshFilter(); fitler.setFilter(siteMeshFilter); return fitler; } } 过滤器类如下: import org.sitemesh.builder.SiteMeshFilterBuilder; import org.sitemesh.config.ConfigurableSiteMeshFilter; public class WebSiteMeshFilter extends ConfigurableSiteMeshFilter{ @Override protected void applyCustomConfiguration(SiteMeshFilterBuilder builder) { //除了/admin/index和/admin/login页面外,其他所有/admin/下的页面都被/admin/index页面所装饰 builder.addDecoratorPath("/admin/*", "/admin/index") .addExcludedPath("/admin/index") .addExcludedPath("/admin/login"); } }
Decorator 페이지
Decorator 페이지 템플릿 페이지입니다. 필터 규칙에 정의된 페이지는 이 페이지로 장식됩니다.
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3"> <head> <title>装饰器页面</title> </head> <body> ... <div id="content"> <sitemesh:write property='body' /> </div> </body> </html>
위 데코레이터 페이지에서 /admin/test와 같은 데코레이팅된 페이지를 방문하면 표시되는 내용은 데코레이터 페이지 + 데코레이팅된 페이지의 body 요소에 있는 콘텐츠, 1da2f56652b4404cf9e47f9a7ebff984는 장식된 페이지의 본문 요소 내의 콘텐츠로 대체됩니다. 테스트 페이지가 다음과 같다고 가정합니다.
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3"> <head> <title>test页面</title> </head> <body> <h1>我是test</h1> </body> </html>
최종 페이지는
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3"> <head> <title>装饰器页面</title> </head> <body> ... <div id="content"> <h1>我是test</h1> </div> </body> </html>입니다.
위 내용은 스프링 부트 통합 사이트 메시의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!