存在问题:不想用include来进行页面布局
解决办法: 使用sitemesh2.4.1版本
解决过程:1,去
sitemesh官网下最新版本(文中使用2.4.1版本),将sitemesh-2.4.1.jar放到/WEB-INF/lib下
2,根据
快速安装文档及
配置文档 a,在/WEB-INF下增加配置文件,我选择了使用
sitemesh.xml+
decorators.xml方式,
然后配置你要装饰的jsp,我目前用的很简单,就这样写了
<decorators defaultdir="/decorators">
<decorator name="layout" page="layout.jsp">
<pattern>/*</pattern>
</decorator>
</decorators>
b.在web.xml中加入如下代码,只需将filter和filter-mapping的配置写在struts前面即可,我的struts版本struts2-core-2.1.2
<filter>
<filter-name>sitemesh</filter-name>
<filter-class>com.opensymphony.sitemesh.webapp.SiteMeshFilter</filter-class>
</filter>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>sitemesh</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.jsp</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
c,编写相应的layout.jsp,这个jsp里面,最重要的无非是标签<decorator:xxx xxx="xxx"/>的写法
d,重启服务器
配置TIPS:
1,新版本的sitemesh不需要sitemesh和struts的plugin包,而且sitemesh的项目里没有提供plugin包下载,极其恶心,需要的可以在
这里下载
2,网上能狗到的,都要在web.xml里做一个clean-up操作,而且使用的sitemesh的filter类也和最新版本的不一致,目前还不知道那些filter类的关系
使用心得1,终于告别那个恶心的include来做页面布局了
2,sitemesh很简单,很容易上手
3,sitemesh和freemaker/velocity的差异:一个是做view+view的结合,一个是model和view的结合,解决的问题不一样,自然,这2种框架是可以配合使用的,就是相应的配置需要做调整
4,sitemesh的装饰配置文件是可以随时修改的,不需要重启服务器
存疑1,如果碰上大规模并发访问的时候,sitemesh的性能如何?
2,ie和fx访问的时候,ie下能给html文件装饰,fx不可以的造成原因是?