sitemesh布局框架学习

首先就是加Jar包,我用的是sitemesh-2.4.2.jar,然后在web.xml中增加过滤器:

Xml代码   收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"  
  3.  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
  5.  http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
  6.  <welcome-file-list>  
  7.   <welcome-file>index.jsp</welcome-file>  
  8.  </welcome-file-list>  
  9.  <filter>  
  10.   <filter-name>sitemesh</filter-name>  
  11.   <filter-class>  
  12.    com.opensymphony.module.sitemesh.filter.PageFilter  
  13.   </filter-class>  
  14.  </filter>  
  15.  <filter-mapping>  
  16.   <filter-name>sitemesh</filter-name>  
  17.   <url-pattern>/*</url-pattern>  
  18.  </filter-mapping>  
  19. </web-app>  

 

增加SiteMesh配置文件decorators.xml,该文件放在WEB-INF下:

Java代码   收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <decorators defaultdir="/layouts/">  
  3.  <!-- 不需要过滤的请求 -->  
  4.  <excludes>  
  5.   <pattern>/static/*</pattern>  
  6.   <pattern>/remote/*</pattern>  
  7.  </excludes>  
  8.  <!-- 定义装饰器要过滤的页面 -->  
  9.  <decorator name="default" page="default.jsp">  
  10.   <pattern>/*</pattern>  
  11.  </decorator>  
  12. </decorators>  

 

在根目录下新建文件夹layouts,然后新建三个JSP,一个是默认,一个输出头,一个输出尾,默认页面引用其他两个。
默认页面default.jsp:

Java代码   收藏代码
  1. <%@ page contentType="text/html;charset=UTF-8"%>  
  2. <%@ taglib prefix="sitemesh" uri="http://www.opensymphony.com/sitemesh/decorator" %>    
  3. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>  
  4. <html>  
  5. <head>  
  6. <title>SiteMesh示例-<sitemesh:title/></title>  
  7. <sitemesh:head/>  
  8. </head>  
  9. <body>  
  10.  <%@ include file="/layouts/header.jsp"%>  
  11.   <div id="content">  
  12.    <sitemesh:body/>  
  13.   </div>  
  14.  <%@ include file="/layouts/footer.jsp"%>  
  15. </body>  
  16. </html>  

 

简单说明:

  • 引入了SiteMesh标签。
  • <sitemesh:title/> 会自动替换为被过滤页面的title。
  • <sitemesh:head/> 会把被过滤页面head里面的东西(除了title)放在这个地方。
  • <sitemesh:body/> 被过滤的页面body里面的内容放在这里。
  • 头部引入js和css,都可以在其他重用。

头页面header.jsp:

Java代码   收藏代码
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2. 菜单信息  

 

尾页面footer.jsp:

Java代码   收藏代码
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2. 版权信息  

 

在根下新建一个文件夹static,用于实验是否拦截,在该文件夹下新建JSP:

Java代码   收藏代码
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2. <%  
  3. String path = request.getContextPath();  
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
  5. %>  
  6. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  7. <html>  
  8.   <head>  
  9.     <base href="<%=basePath%>">  
  10.     <title>有人拦截我吗?</title>  
  11.   </head>  
  12.   <body>  
  13.     有人拦截我吗?  
  14.   </body>  
  15. </html>  

 

访问:http://127.0.0.1:8080/sitemesh/index.jsp这个会拦截
访问:http://127.0.0.1:8080/sitemesh/static/index.jsp则不会拦截处理
根据页面看实际效果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值