Sitemesh使用

最近接触到Sitemesh这个工具,感觉用起来还是比较方便,比我们直接使用include要方便点,下面就将该工具的使用情况记录下来。

一.准备工具

    1.sitemesh-2.4.jar:sitemesh的核心jar包,里面包含了基本的tld标签文件

    2.servlet-api.jar :web项目需要的

二.编码

    1. sitemesh主要是通过过滤器来进行拦截我们的请求,然后将公用的信息附加到返回的信息中,所以先要配置过滤器,在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> 

   2. 在WEB-INF目录下面创建decorators.xml文件来定义我们具体的配置,比如定义那些请求需要进行单独的配置等。

 

   

<?xml version="1.0" encoding="UTF-8"?>

<!-- 默认目录 -->
<decorators defaultdir="/decorators">

    <!-- 缺省装饰页 -->
    <decorator name="default" page="default.jsp">
        <pattern>/*</pattern>
    </decorator>
     
    <!-- 自定义装饰页 -->
    <decorator name="index" page="default.jsp">
        <pattern>/index.do</pattern>
    </decorator>
</decorators>

    其中defaultdir定义我们装饰页面的目录,缺省配置是所有的请求都会装饰到default.jsp页面中,也可以单独配置index.do请求道default.jsp页面中,根据自己的需要来进行配置。

 

   3.创建我们的装饰页面

      在decorators目录下面创建default.jsp,内容如下:

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>



<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator" %>
<%@ taglib uri="http://www.opensymphony.com/sitemesh/page" prefix="page" %>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">


</head>
<body>
<h2 align="center">网站头部信息</h2>
<hr>
    <decorator:body></decorator:body>
<hr/>
<p align="center">网站底部信息</p>
</body>
</html>

    这里需要将sitemesh的标签导入,我这里只将body位置留出来,然后被装饰的页面的body信息就会被装饰到这里进行完整显示出来,从而不需要关心头部和底部信息。

 

    4.创建被装饰页面test.jsp

      在WEB-INF目录下面创建jsp目录,然后再创建test.jsp页面,内容很简单

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

</head>
<body>
这里存放具体的内容,不用关心头部和底部内容
</body>
</html>

    就在body里面存放具体的内容

 

   5.编写servlet来访问test.jsp

    创建一个servlet:

   

package com.jacksoft.sitemesh.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class IndexServlet extends HttpServlet{

    /**
      * @Fields serialVersionUID : TODO
      */
    
    private static final long serialVersionUID = 1L;

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        req.getRequestDispatcher("WEB-INF/jsp/test.jsp").forward(req, resp);
    }
    
    
    
}

    然后再web.xml中配置servlet,当然现在高版本的容器已经支持注解的形式来配置servlet。

 

   

  <servlet>
  	<servlet-name>test</servlet-name>
  	<servlet-class>com.jacksoft.sitemesh.servlet.IndexServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>test</servlet-name>
  	<url-pattern>/index.do</url-pattern>
  </servlet-mapping>

    6. OK,到这里已经差不多了,启动server,访问http://127.0.0.1:8080/test/index.do

 

       
Sitemesh使用_第1张图片
 

  当前Sitemesh还有很多其他的标签,比如head啊之类的,具体可以到http://wiki.sitemesh.org/pages/recentlyupdated.action?key=sitemesh这里去查看,有对应的文档

 

   附上对应的jar

  

 

      

你可能感兴趣的:(sitemesh)