`
zhangfeilo
  • 浏览: 399779 次
  • 性别: Icon_minigender_1
  • 来自: 昆明
社区版块
存档分类
最新评论

SiteMesh模板应用与struts2整合

阅读更多

SiteMesh是一个非常优秀的页面装饰框架,通过SiteMeth的帮助,可以大大提高页面布局的开发速度,并且统一应用的所有页面的整体布局。它与Jsp中的Include指令完全相同的效果,但提供了比include更好的解耦、更好的代码复用。

jar包:

sitemesh.jar struts2-sitemesh-plugin.jar

 

1、web.xml文件过滤配置

<?xml version="1.0" encoding="GBK"?>
<!-- 配置Web应用配置文件的根元素,并指定配置文件的Schema信息 -->
<web-app 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" version="2.5">
	<!-- 定义ActionContextCleanUp过滤器 -->
	<filter>
		<filter-name>struts-cleanup</filter-name>
		<filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
	</filter>
	<!-- 定义SiteMesh的核心过滤器 -->
	<filter>
		<filter-name>sitemesh</filter-name>
		<filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class>
	</filter>
	<!-- 定义Struts 2的核心过滤器 -->
	<filter>
		<filter-name>struts</filter-name>
		<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
	</filter>

	<!-- 定义过滤器链 -->
	<!-- 排在第一位的过滤器是:ActionContextCleanUp过滤器 -->
	<filter-mapping>
		<filter-name>struts-cleanup</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<!-- 排在第二位的过滤器是:SiteMesh的核心过滤器 -->
	<filter-mapping>
		<filter-name>sitemesh</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<!-- 排在第三位的过滤器是:FilterDispatcher过滤器 -->
	<filter-mapping>
		<filter-name>struts</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<!-- 定义一个Listener,该Listener在应用启动时创建Spring容器 -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener
		</listener-class>
	</listener>
	<!-- 定义一个Listener,该Listener在应用启动时加载MyFaces的Context -->
	<listener>
		<listener-class>org.apache.myfaces.webapp.StartupServletContextListener
		</listener-class>
	</listener>
	<!-- 配置JSF的FacesServlet,让其在应用启动时加载 -->
	<servlet>
		<servlet-name>faces</servlet-name>
		<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<!-- 让FacesServlet拦截所有以*.action结尾的请求 -->
	<servlet-mapping>
		<servlet-name>faces</servlet-name>
		<url-pattern>*.action</url-pattern>
	</servlet-mapping>
</web-app>

  2、模板页面 main.jsp

<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %>
<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator"
	prefix="decorator"%>
<%@ taglib uri="http://www.opensymphony.com/sitemesh/page"
	prefix="page"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<title><decorator:title default="SiteMesh的装饰器页"/></title>
	<link href="decorators/main.css" rel="stylesheet" type="text/css">
	<decorator:head/>
</head>
<body>
<table width="100%" height="100%">
	<tr>
		<td valign="top">
		<!-- 引入一个页面,临时指定所用的装饰器 -->
		<page:applyDecorator page="/book.html" name="panel" />
		<page:applyDecorator page="/link.html" name="panel" />
		</td>
		<td width="100%">
			<table width="100%" height="100%">
				<tr>
					<td id="pageTitle">
						<decorator:title/>
					</td>
				</tr>
				<tr>
					<td valign="top" height="100%">
						<decorator:body />
					</td>
				</tr>
				<tr>
					<td id="footer">
						<b>被包含的内容</b><br />
						SithMesh提供页面装饰支持
					</td>
				</tr>
			</table>
		</td>
	</tr>
</table>
</body>
</html>

  3、配置装饰器decorators.xml

 

<?xml version="1.0" encoding="GBK"?>
<decorators defaultdir="/decorators">
    <!-- 在excludes元素下指定的页面将不会由SiteMesh来装饰 -->
    <excludes>
        <pattern>/exclude.jsp</pattern>
        <pattern>/exclude/*</pattern>
    </excludes>
	<!-- 创建一个名为main的装饰器,该装饰器页面为main.jsp,
	     用于装饰pattern指定的URL的所有页面-->
    <decorator name="main" page="main.jsp">
        <pattern>/*</pattern>
    </decorator>
	<!-- 定义一个装饰器,但该装饰器默认不装饰任何页面 -->
    <decorator name="panel" page="panel.jsp"/>
</decorators>
 

0
0
分享到:
评论

相关推荐

    Struts2整合SiteMesh

    将Struts2与SiteMesh整合,可以实现更加统一和规范化的网站外观,并减少重复代码。 整合Struts2和SiteMesh主要涉及以下几个步骤: 1. **添加依赖**:首先,在项目中引入SiteMesh的jar包。如果使用的是Maven,可以...

    struts2与sitemesh整合所需架包

    Struts2和Sitemesh是两个非常重要的Java Web开发框架,它们在构建高效、结构化的MVC(模型-视图-控制器)应用中扮演着重要角色。Struts2作为Action框架,提供了强大的动作控制和业务逻辑处理能力,而Sitemesh则是一...

    sitemesh+ spring2 + struts2 + hibernate 的 demo

    5. 使用Sitemesh定义全局布局模板,并在Struts2配置中指定装饰器。 6. 编写业务逻辑,通过Struts2调用Spring管理的Service,由Service调用Hibernate管理的DAO,完成数据操作。 7. 运行项目,观察Sitemesh装饰效果...

    struts2+sitemesh例子

    **Struts2与Sitemesh集成** 将Struts2和Sitemesh集成,可以充分利用两者的优点,创建既有良好结构又美观的Web应用。集成过程主要包括以下步骤: 1. 添加Sitemesh的依赖到项目中,通常在Maven的pom.xml文件中添加...

    SiteMesh 开发 struts插件

    总的来说,SiteMesh 开发 Struts 插件简化了 Struts2 与 SiteMesh 的集成过程,使得开发者能够快速地为 Web 应用添加一致性的外观和感觉,提高用户体验。通过合理的配置和模板设计,可以实现灵活的页面布局,同时...

    struts2sitemesh-freemarker 源码

    在源码中,可以看到Sitemesh配置和过滤器的实现,以及如何与Struts2整合,确保每个Action的结果都能被正确装饰。 3. **FreeMarker模板引擎**:FreeMarker是一个基于模板的语言,它与Java代码分离,使得视图层更加...

    Struts2.0 与 sitemesh的例子

    将Struts2.0与Sitemesh整合,可以让Struts2处理业务逻辑,而Sitemesh负责页面的装饰和布局。这样,开发者可以专注于业务代码编写,而无需关心页面的样式细节。通常,整合步骤包括: 1. **添加依赖**:在项目中引入...

    struts2+spring +hibernate 整合应用实现用户登陆。

    6. **整合Struts2与Spring** 在Struts2的配置文件中声明Spring的Action类,使Struts2可以利用Spring的IoC容器来实例化Action。 7. **整合Hibernate与Spring** 在Spring配置文件中,定义SessionFactory bean,并...

    struts2-sitemesh-plugin-2.0.6.jar

    struts框架与sitemesh框架整合的插件,在java web开发中可以制作模板页,使自己做的网站看起来更专业

    初试sitemesh实现模块简易整合

    3. **使用Spring MVC或Struts2**:如果项目使用了Spring MVC或Struts2等框架,Sitemesh有对应的整合方式,可以更方便地实现页面装饰。 4. **处理Ajax请求**:Sitemesh默认不处理Ajax请求,但可以通过自定义Filter或...

    spring+struts2+ibatis整合

    Struts2与Spring整合后,可以利用Spring的DI来管理Struts2的Action,增强了应用的可测试性和可维护性。 **iBatis框架**: iBatis是一个SQL映射框架,它将SQL语句和Java代码分离,提高了数据库操作的灵活性。开发者...

    struts2与shiro集成(实例)

    总的来说,"struts2与shiro集成(实例)"的项目可能包含了如何在Struts2应用中整合Shiro进行安全控制,以及使用Sitemesh来实现统一的页面布局。这样的项目有助于开发者学习和实践Java Web应用的安全管理和用户体验提升...

    struts2参考文档(word版)

    第九章可能讲解Struts2与其他框架的集成,如Spring、Hibernate等,以及如何构建完整的MVC架构。 最后,文档可能包含了一些实战示例,引导读者从零开始搭建一个完整的Struts2项目,通过实际操作加深对理论知识的理解...

    使用sitemesh替换tiles2,spring mvc+spring web flow+sitemsh

    6. **整合 Spring Web Flow**:在 Spring Web Flow 中,你需要配置 Sitemesh 与 Flow 视图解析器一起工作。这通常涉及到创建自定义的 `ViewResolver` 实现,它将 Flow 视图名称转换为 Sitemesh 可以识别的格式。 在...

    Struts2+Spring+Ibatis环境配置.doc

    8. `struts2-sitemesh-plugin-2.0.11.jar`:整合Sitemesh进行页面布局和装饰。 Spring框架的核心组件主要是`spring.jar`,它提供: 1. 依赖注入(DI)和控制反转(IoC):使得对象间的依赖关系可以在运行时自动管理...

    SiteMesh教程.pdf

    SiteMesh可以与多种JSP标签库、模板引擎以及前端技术结合使用,如Struts、Velocity、Jakarta、JSR 168 Portlets等。这意味着开发人员可以利用这些技术在SiteMesh装饰的页面中实现更加丰富的功能和设计。 6. 页面...

    Struts2Spring4登录

    在Struts2中集成Sitemesh,可以使登录成功或失败后的提示信息更容易地融入到页面模板中。 为了实现Struts2Spring4的登录功能,我们需要完成以下步骤: 1. **配置Struts2和Spring4**:在web.xml中配置Struts2的前端...

    Struts2.1权威指南——基于WebWork核心的MVC开发.pdf

    - **第14章至第19章整合其他框架**:分别讲述了Struts2与其他流行框架(如Spring、JSF、SiteMesh、JasperReports、JFreeChart、Hibernate)的整合方法,扩展了Struts2的功能范围。 - **第20章至第21章案例分析**:...

    Java的Struts框架简介与环境配置教程

    4. **易整合性**:Struts2可以轻松地与Spring、Tiles、SiteMesh等其他框架集成,增强了系统的扩展性。 5. **模板支持**:支持多种模板技术,如JSP、Freemarker、Velocity和XSLT,开发者可以根据需求选择合适的视图...

Global site tag (gtag.js) - Google Analytics