一个简单的sitemesh配置(基于struts2+velocity)
说明:只是把最后的成品写了出来,还有很多不足之处,请指正。
?
一、编辑环境:
MyEclipse6.6
Tomcat5.5
JDK1.6
struts2.0.11.2
添加的一些jar包如下(有很多没派上用场,我懒得整理了):
avalon-logkit-2.1.jar
commons-beanutils.jar
commons-collections-3.2.jar
commons-collections.jar
commons-digester.jar
commons-logging-1.0.4.jar
ognl-2.6.11.jar
poi.jar
sitemesh-2.3.jar
struts2-core-2.0.11.2.jar
struts2-sitemesh-plugin-2.0.11.2.jar
tiles-jsp-2.0.4.jar
velocity-1.4.jar
velocity-dep-1.3.1.jar
velocity-tools-1.3.jar
velocity-tools-view-1.3.jar
xwork-2.0.5.jar
?
?
二、web.xml
<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><!-- 在Tomcat中对项目的描述部分 --><display-name>sitemesh</display-name><!-- 在部署之前,先清除环境 --><filter><filter-name>struts-cleanup</filter-name><filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class></filter><filter-mapping><filter-name>struts-cleanup</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- 注意ActionContextCleanUp过滤器必须在FilterDispatcher之前配置,ActionContextCleanUp的主要功能是通知FilterDispatcher执行完毕不要清除ActionContext,以便sitemesh装饰器可以访问Struts值堆栈。 --><filter><filter-name>sitemesh</filter-name><filter-class>org.apache.struts2.sitemesh.VelocityPageFilter</filter-class></filter><filter-mapping><filter-name>sitemesh</filter-name><url-pattern>*.do</url-pattern><!-- 如果将'/*'改成.do表示只修饰该后缀名的文件 --></filter-mapping><!-- 部署filter的名称以及对应的类 --><filter><filter-name>Struts2</filter-name><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class></filter><!-- 配置filter对呀的url模式 --><filter-mapping><filter-name>Struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- 配置这个项目对应的默认首页 --><welcome-file-list><welcome-file>/index.jsp</welcome-file></welcome-file-list></web-app>?
三、struts.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"><struts><constant name="struts.devMode" value="false"></constant><constant name="struts.action.extension" value="do" /> <!-- 在包中导入Struts自带的配置文件struts-default.xml --><package name="default" extends="struts-default" namespace="/"><action name="index" type="velocity">aaa.vm</result></action><action name="bbb" type="velocity">bbb.vm</result></action></package></struts>?
四、在lib目录下建立一个decorator.xml文件
<?xml version="1.0" encoding="UTF-8"?><decorators defaultdir="/decorators"><decorator name="main" page="default.vm"><pattern>*</pattern></decorator></decorators>?
五、在WebRoot目录下建立一个文件夹decorators,在此文件夹下建立三个velocity文件
header.vm
<h1>header<br>#set($a="abc")a=$a</h1>
?
footer.vm
<h2>footer!</h2>?
default.vm
tml><head><title>$title</title>$head</head><body>##include("decorators/header.vm")#parse("decorators/header.vm")<br>this is body<br>$body<br>##include("decorators/footer.vm")#parse("decorators/footer.vm")</body></html>??
六、在WebRoot下建立俩个velocity文件
aaa.vm
<html><head><title>my title</title></head><body>#set($i=2)hello $i !!!<br/><a href="bbb.do?a=2">link2</a></body></html>?
bbb.vm
<h1>this is a=$a</h1>
?
七、运行
http://127.0.0.1:8080/sitemesh_velocity/
http://127.0.0.1:8080/sitemesh_velocity/index.do
http://127.0.0.1:8080/sitemesh_velocity/bbb.do?a=2
?
?
?
1 楼 grandboy 2009-02-01 不错,解决我以前的一个疑问。 2 楼 qaz1qaz2qaz3 2012-02-24 为什么我的运行结果是:$head ##include("decorators/header.vm") #parse("/decorators/header.vm")
this is body
$body
##include("decorators/footer.vm") #parse("/decorators/footer.vm")
能发个完整版(带JAR包)的到76402306@qq.com吗?