读书人

一个容易的sitemesh配置(基于struts2

发布时间: 2012-11-06 14:07:00 作者: rapoo

一个简单的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吗?

读书人网 >软件架构设计

热点推荐