1. sitemesh
布局框架,用于修饰页面
1.1下载sitemesh-2.4.2.jar
1.2 web.xml引入
<filter>
<filter-name>sitemeshFilter</filter-name>
<filter-class>com.opensymphony.sitemesh.webapp.SiteMeshFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>sitemeshFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
1.3 WEB-INF下新建decorators.xml,如下
<?xmlversion="1.0"encoding="UTF-8"?>
<decoratorsdefaultdir="/layouts/">
<!--不需要过滤的请求 -->
<excludes>
<pattern>/static/*</pattern>
<pattern>/remote/*</pattern>
</excludes>
<!--定义装饰器要过滤的页面 -->
<decoratorname="default"page="default.jsp">
<!--定义装饰器要过滤的所有页面 -->
<pattern>/*</pattern>
</decorator>
<!--
<decoratorname="default"page="default.jsp">
<decoratorname="footer"page="footer.jsp">
-->
</decorators>
1.4 根目录新建文件夹layouts,如下
default.jsp:
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ taglib prefix="sitemesh"uri="http://www.opensymphony.com/sitemesh/decorator"%>
<%@ taglib prefix="c"uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<title>SiteMesh示例-<sitemesh:title/></title>
<sitemesh:head/>
</head>
<body>
<%@include file="/layouts/header.jsp"%>
<divid="content">
<sitemesh:body/>
</div>
<%@include file="/layouts/footer.jsp"%>
</body>
</html>
footer.jsp:
<%@ page language="java"import="java.util.*"pageEncoding="UTF-8"%>
我是底部
header.jsp:
<%@ page language="java"import="java.util.*"pageEncoding="UTF-8"%>
我是头部
1.5 WEB-INF下index.jsp
index.jsp:
<%@ page language="java"contentType="text/html;charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%
Stringpath = request.getContextPath();
StringbasePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPEhtmlPUBLIC "-//W3C//DTDHTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<!-- <meta name="decorator" content="default"/> content值引入decorator的name -->
<basehref="<%=basePath%>">
<title>HELLO</title>
</head>
<body>
WELCOME!!!
</body>
</html>
1.6 访问项目下index.jsp,如
注: <sitemesh:title/>、<sitemesh:head/>、<sitemesh:body/>套用原页面数据,<sitemesh:head/>可以引入原页面css、js