http://wiki.sitemesh.org/wiki/display/sitemesh/Setup+SiteMesh+in+5+Minutes+or+Less
https://www.jianshu.com/p/23f94c9cad62
https://mkyong.com/spring-mvc/how-to-register-a-servlet-filter-in-spring-mvc/
https://ithelp.ithome.com.tw/articles/10158492
乾貨
1.POM.xml
<properties> <sitemesh.version>3.0.1</sitemesh.version> <jstl.version>1.2</jstl.version> <log4j-slf4j-impl.version>2.11.0</log4j-slf4j-impl.version> </properties> <dependencies> <!-- https://mvnrepository.com/artifact/org.sitemesh/sitemesh --> <dependency> <groupId>org.sitemesh</groupId> <artifactId>sitemesh</artifactId> <version>${sitemesh.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/javax.servlet/jstl --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>${jstl.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-slf4j-impl --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> <version>${log4j-slf4j-impl.version}</version> </dependency> </dependencies>
2.1 (XML配置)
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <display-name>bli-demo-view</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <filter> <filter-name>sitemesh</filter-name> <filter-class>org.sitemesh.config.ConfigurableSiteMeshFilter</filter-class> </filter> <filter-mapping> <filter-name>sitemesh</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
sitemesh3.xml
<?xml version="1.0" encoding="UTF-8"?> <sitemesh> <mapping path="/*" decorator="/WEB-INF/global/decorators/default-decorator.jsp"/> </sitemesh>default-decorator.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <html> <head> <title>SiteMesh example: <sitemesh:write property='title'/></title> <style type='text/css'> /* Some CSS */ body { font-family: arial, sans-serif; background-color: #ffffcc; } h1, h2, h3, h4 { text-align: center; background-color: #ccffcc; border-top: 1px solid #66ff66; } .mainBody { padding: 10px; border: 1px solid #555555; } .disclaimer { text-align: center; border-top: 1px solid #cccccc; margin-top: 40px; color: #666666; font-size: smaller; } </style> <sitemesh:write property='head'/> </head> <body> <h1 class='title'>SiteMesh example site: <sitemesh:write property='title'/></h1> <div class='mainBody'> <sitemesh:write property='body'/> </div> <div class='disclaimer'>Site disclaimer. This is an example.</div> </body> </html>index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <html> <head> <title>Hello World</title> <meta name='description' content='A simple page'> </head> <body> <p>Hello <strong>world</strong>!</p> SiteMesh Demo!!! </body> </html>
2.2(JAVA 配置...就是夯)
SiteMeshFilter.java (取代sitemesh3.xml,web.xml)
package tw.gov.bli.np.web.config; import javax.servlet.annotation.WebFilter; import org.sitemesh.builder.SiteMeshFilterBuilder; import org.sitemesh.config.ConfigurableSiteMeshFilter; @WebFilter("/*") public class SiteMeshFilter extends ConfigurableSiteMeshFilter { @Override protected void applyCustomConfiguration(SiteMeshFilterBuilder builder) { builder //使用的版型 .addDecoratorPath("/*", "/WEB-INF/global/decorators/default-decorator.jsp") //排除路徑 .addExcludedPath("/login"); } }
it's magic!!!
3.補上log4j2 + self4j設定檔
log4j2.properties
name = myconfig rootLogger.level = trace rootLogger.appenderRef.stdout.ref = STDOUT appender.console.type = Console appender.console.name = STDOUT appender.console.layout.type = PatternLayout appender.console.layout.pattern = [%d{yy-MMM-dd HH:mm:ss:SSS}] [%p] [%c{1}:%L] - %m%n appender.console.filter.threshold.type = ThresholdFilter appender.console.filter.threshold.level = trace