Strutrs2 整合SiteMesh

     SiteMesh应用装饰器模式,通过filter截取request和response,然后给原始页面一定的装饰,把结果换回给客户端。对于被装饰的页面来说,完全无需关心本页面被装饰器装饰(装饰器配置在配置文件中,由装饰器配置文件来控制那个装饰器装饰哪些页面)。通过这种方式,可以最大限度的实现页面代码的复用,并提供优秀的解耦。

     下面是整合SiteMesh所需的步骤。

     1.把相应的jar包放到lib下。

     2.在web.xml中加上如下配置。

    <filter>
  <filter-name>struts-cleanup</filter-name>
  <filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
 </filter>
 <filter>
  <filter-name>sitemesh</filter-name>
  <filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class>
 </filter>
    <filter>
        <filter-name>struts</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>struts-cleanup</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>sitemesh</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>struts</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    3.为了在jsp页面能用SiteMesh标签库则还需要导入SiteMesh标签库

<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator"%>
<%@ taglib uri="http://www.opensymphony.com/sitemesh/page" prefix="page"%>

    下面是一个example装饰页面

<%@ page contentType="text/html; charset=GBK"%>
<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator"%>
<%@ taglib uri="http://www.opensymphony.com/sitemesh/page" prefix="page"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
 <head>
  <title><decorator:title default="SiteMesh的装饰器页"/></title>
  <link href="images/main.css" rel="stylesheet" type="text/css">
  <decorator:head/>
  <s:head/>
  <script>
   function refresh()
   {
    document.getElementById("authImg").src='authImg?now=' + new Date();
   }
  </script>
 </head>
 <body>
  <table width="780" align="center">
   <tr>
    <td valign="top" width="200">
     <!-- 引入一个页面,临时指定所用的装饰器 -->
     <page:applyDecorator page="/decorators/book.html" name="panel" />
     <page:applyDecorator page="/decorators/link.html" name="panel" />
    </td>
    <td width="580">
     <table width="100%" height="100%">
      <tr>
       <td id="pageTitle">
        <decorator:title/>
       </td>
      </tr>
      <tr>
       <td valign="top" height="100%">
        <decorator:body />
       </td>
      </tr>
      <tr>
       <td id="footer">
       All Rights Reserved.<br>
       版权所有 Copyright@2006 Yeeku.H.Lee <br>
       如有任何问题和建议,<a href="mailto:[email protected]">请E-mail to me</a>!<br>
       建议您使用1024*768分辨率,IE5.0以上版本浏览本站!
       </td>
      </tr>
     </table>
    </td>
   </tr>
  </table>
 </body>
</html>

      4.下面使用配置文件来定义装饰器 decorators.xml

   <?xml version="1.0" encoding="GBK"?>

<decorators defaultdir="/decorators">
    <!-- 在excludes元素下指定的页面将不会由SiteMesh来装饰 -->
    <excludes>
    </excludes>

 <!-- 创建一个名为main的装饰器,该装饰器页面为main.jsp,
      用于装饰pattern指定的URL的所有页面-->
    <decorator name="main" page="main.jsp">
        <pattern>/*</pattern>
    </decorator>

 <!-- 定义一个装饰器,但该装饰器默认不装饰任何页面 -->
    <decorator name="panel" page="panel.jsp"/>
</decorators>

你可能感兴趣的:(apache,jsp,浏览器,struts,css)