之前就知道sitemesh 的功能,但是一直没能静下心来研究,今天终于运行出来了。
以前写web页面时都是在页面中将公共的部分include进来,sitemesh的应用使得页面自动引入公共部分的代码到页面。
decorators目录下存放的是公共部分代码。以basic-theme.jsp为例
<?xml version="1.0" encoding="UTF-8" ?>
<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title><decorator:title default="默认title"/></title>
</head>
<body>
<h1>Header</h1>
<p><b>Navigator</b></p>
<hr />
<decorator:body />
<hr />
<h1>footer</h1>
</body>
</html>
admin-theme.jsp和这个类似。
decorators.xml中配置
<?xml version="1.0" encoding="UTF-8"?> <decorators defaultdir="/decorators"> <decorator name="basic-theme" page="basic-theme.jsp"> <pattern>/*</pattern><!--webroot根目录--> </decorator> <decorator name="admin-theme" page="admin-theme.jsp"> <pattern>/admin/*</pattern><!--admin目录--> </decorator> </decorators>
web.xml中配置过滤器
<filter> <filter-name>sitemesh</filter-name> <filter-class>com.opensymphony.sitemesh.webapp.SiteMeshFilter</filter-class> </filter> <filter-mapping> <filter-name>sitemesh</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
根目录下的index.jsp
<body>
前台首页 <br>
Hello world!
</body>
转载于:https://blog.51cto.com/shamrock/1255155