decorators.xml

  最近维护一个项目,因为这个项目我没作开发,所以需要先熟悉项目的框架和业务,昨天被一个问题给整懵了,我不管怎么看都弄不明白那个链接怎么跳过去的.因为那个链接地址跟实际看到的页面不一样.链接地址的页面只是实际看到页面的一小部分,反反复复盯着那个请求名,然后到struts.xml文件中去找实际的跳转页面,反复查了几遍确定没问题,但看到的页面的确跟struts.xml里面写的path不一样. 
   后来在项目中发现有个decorators.xml配置文件,google之,这才明白是它在作怪! 
   最近项目也比较清闲,所以把这个贴出来给大家看看:). 
    要使用decorator标签需要下载sitemesh.jar包. 
decorator标签可以轻松解决页面布局的问题,轻松是因为相比<include>标签(需要在每个页面都用他引入JSP)而言,decorator标签的使用很简便,只需要在配置文件decorators.xml进行相应的配置再加上一个装饰器(其实就是一个JSP页面)即可. 
decorators.xml 
<decorators defaultdir="/decorators"> 
<excludes> 
<pattern>/shared/*</pattern> 
</excludes> 
<decorator name="style" page="style.jsp"> 
<pattern>/*</pattern> 
</decorator> 
</decorators> 

<excludes> 标签代表不对定义的请求名进行装饰 
<decorator> 标签代表对定义的请求名进行相应的装饰 
现在我门需要定义一个style.jsp文件,官方是称之为装饰器,俺觉得称他是模版文件更贴切 
style.jsp 

<%@ page contentType="text/html; charset=utf-8"%> 
<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator" %> 
<html> 
  <head> 
    <title><decorator:title default="装饰器页面..." /></title> 
    <decorator:head /> 
  </head> 
  <body> 
    <p><font color="red">this is style's header</font></p> 
    <hr> 
    <decorator:body /> 
    <hr> 
    <p><font color="red">this is style's footer</font></p> 
  </body> 
</html> 
需要注意的是style.jsp需要放在 根目录/decorators目录下面,当然decorators目录是需要自己建的. 
在这个JSP里面,我们要用到decorator标签了,注意在用之前别忘了定义标签: 
<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator" %> 

至于<decorator:title>,<decorator:head />,<decorator:body />的作用,后面再说! 
然后要作的就是准备好我们访问的页面 
index.jsp: 

<%@ page contentType="text/html; charset=utf-8"%> 
<html> 
<head> 
<title>decorator-index.jsp</title> 
</head> 
<body> 
this is index.jsp. it's a simple page. 
</body> 
</html> 
把这个页面放在 根目录下和 根目录/shared目录下面一份 
现在把应用运行起来 
访问: 
http://localhost:8080/testDecorator/index.jsp 
http://localhost:8080/testDecorator/shared/index.jsp 
看看两个页面有什么不一样的? 
没错,第一个链接看到的页面还包含style.jsp的东东. 

而第二个链接却没有,是因为在decorators.xml文件在把这类的请求给过滤了. 

现在明白<decorator:title>,<decorator:head />,<decorator:body />的作用了吗? 
没错,他们依次负责输出用户所访问的页面中title,head,body标签之间的内容(不包含<title>,<head>,<body>标签). 
decorator标签还有一些属性和用法,在这就不赘述了,大家自己研究吧 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值