JSP中使用SIteMesh实现类似母版效果

1.sitemesh官网

http://www.baidu.com/link?url=vOHcgbkFz2ppR8BWjrPn-RXfc5WtmWxxfmYv8Uf_qnB6C4D5p_-7Q3ap4JXnqGoX

2.介绍

SiteMesh框架是OpenSymphony团队开发的一个非常优秀的页面装饰器框架,它通过对用户请求进行过滤,并对服务器向客户端响应也进行过滤,然后给原始页面加入一定的装饰(header,footer等),然后把结果返回给客户端。通过SiteMesh的页面装饰,可以提供更好的代码复用,所有的页面装饰效果耦合在目标页面中,无需再使用include指令来包含装饰效果,目标页与装饰页完全分离,如果所有页面使用相同的装饰器,可以是整个Web应用具有统一的风格。

3.使用

a.使用eclipse新建web项目,下载sitemesh官方jar包放入到WEB-INF/lib文件夹下

b.WEB-INF文件夹下新建dexorators.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <decorators defaultdir="/WEB-INF/layouts/">
 3     <!-- 可设置某些特定页面不使用此装饰 -->
 4     <excludes>
 5         <pattern>/index.jsp</pattern>
 6     </excludes>
 7
 8     <!-- 设定使用此装饰的页面 page为装饰页面jsp -->
 9     <decorator name="default" page="default.jsp">
10         <pattern>/*</pattern>
11     </decorator>
12 </decorators>

decrators.xml

c.编写装饰文件default.jsp(此处使用了bootstrap,将bootstrap的相关文件放到WebRoot下新建的static文件夹内)

 1 <%@ page contentType="text/html;charset=UTF-8"%>
 2 <%@ taglib prefix="sitemesh" uri="http://www.opensymphony.com/sitemesh/decorator" %>
 3 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
 4
 5 <c:set var="ctx" value="${pageContext.request.contextPath}" />
 6
 7 <!DOCTYPE html>
 8 <html>
 9 <head>
10 <title>sitemesh示例:<sitemesh:title/></title>
11 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
12 <meta http-equiv="Cache-Control" content="no-store" />
13 <meta http-equiv="Pragma" content="no-cache" />
14 <meta http-equiv="Expires" content="0" />
15
16 <link type="image/x-icon" href="${ctx}/static/images/favicon.ico" rel="shortcut icon">
17 <link href="${ctx}/static/bootstrap/2.3.2/css/bootstrap.min.css" type="text/css" rel="stylesheet" />
18 <link href="${ctx}/static/jquery-validation/1.11.1/validate.css" type="text/css" rel="stylesheet" />
19 <link href="${ctx}/static/styles/default.css" type="text/css" rel="stylesheet" />
20 <script src="${ctx}/static/jquery/jquery-1.9.1.min.js" type="text/javascript"></script>
21 <script src="${ctx}/static/jquery-validation/1.11.1/jquery.validate.min.js" type="text/javascript"></script>
22 <script src="${ctx}/static/jquery-validation/1.11.1/messages_bs_zh.js" type="text/javascript"></script>
23
24
25 <sitemesh:head/>
26 </head>
27
28 <body>
29     <div class="container">
30         <%@ include file="/WEB-INF/layouts/header.jsp"%>
31         <div id="content">
32             <sitemesh:body/>
33         </div>
34         <%@ include file="/WEB-INF/layouts/footer.jsp"%>
35     </div>
36     <script src="${ctx}/static/bootstrap/2.3.2/js/bootstrap.min.js" type="text/javascript"></script>
37 </body>
38 </html>

footer.jsp

1 <%@ page language="java" pageEncoding="UTF-8" %>
2 <div id="footer">
3     Copyright &copy; 2005-2015 <a href="#">My First JSP</a>
4 </div>

header.jsp

1 <%@ page language="java" pageEncoding="UTF-8" %>
2 <div id="footer">
3     Copyright &copy; 2005-2015 <a href="#">My First JSP</a>
4 </div>

d.写测试的访问jsp页面

login.jsp

 1 <%@ page contentType="text/html;charset=UTF-8" %>
 2 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
 3 <c:set var="ctx" value="${pageContext.request.contextPath}"/>
 4
 5 <html>
 6 <head>
 7     <title>登录页</title>
 8 </head>
 9
10 <body>
11     <form id="loginForm" action="${ctx}/login" method="post" class="form-horizontal">
12         <div class="control-group">
13             <label for="username" class="control-label">名称:</label>
14             <div class="controls">
15                 <input type="text" id="username" name="username"  value="${username}" class="input-medium required"/>
16             </div>
17         </div>
18         <div class="control-group">
19             <label for="password" class="control-label">密码:</label>
20             <div class="controls">
21                 <input type="password" id="password" name="password" class="input-medium required"/>
22             </div>
23         </div>
24
25         <div class="control-group">
26             <div class="controls">
27                 <label class="checkbox" for="rememberMe"><input type="checkbox" id="rememberMe" name="rememberMe"/> 记住我</label>
28                 <input id="submit_btn" class="btn btn-primary" type="submit" value="登录"/> <a class="btn" href="${ctx}/register">注册</a>
29             </div>
30         </div>
31     </form>
32
33 </body>
34 </html>

welcome.jsp

 1 <%@ page contentType="text/html;charset=UTF-8" %>
 2 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
 3 <c:set var="ctx" value="${pageContext.request.contextPath}"/>
 4
 5 <html>
 6 <head>
 7     <title>登录页</title>
 8 </head>
 9
10 <body>
11     <form id="welcomeForm" method="post" class="form-horizontal">
12         欢迎
13     </form>
14
15 </body>
16 </html>

e.修改web.xml文件

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee"
 3     xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
 4     version="2.5">
 5      <filter>
 6      <filter-name>sitemesh</filter-name>
 7      <filter-class>
 8          com.opensymphony.module.sitemesh.filter.PageFilter
 9      </filter-class>
10      </filter>
11
12      <filter-mapping>
13      <filter-name>sitemesh</filter-name>
14      <url-pattern>/*</url-pattern>
15      </filter-mapping>
16
17      <servlet>
18         <servlet-name>login</servlet-name>
19         <jsp-file>/WEB-INF/views/account/login.jsp</jsp-file>
20     </servlet>
21     <servlet-mapping>
22         <servlet-name>login</servlet-name>
23         <url-pattern>/login</url-pattern>
24     </servlet-mapping>
25
26          <servlet>
27         <servlet-name>welcome</servlet-name>
28         <jsp-file>/WEB-INF/views/account/welcome.jsp</jsp-file>
29     </servlet>
30     <servlet-mapping>
31         <servlet-name>welcome</servlet-name>
32         <url-pattern>/welcome</url-pattern>
33     </servlet-mapping>
34  </web-app>

f.运行测试,查看效果

sitemesh3 推荐博客

http://www.cnblogs.com/luotaoyeah/p/3776879.html

时间: 2024-10-08 06:49:23

JSP中使用SIteMesh实现类似母版效果的相关文章

JSP中使用SIteMesh实现类似asp.net母版效果

1.介绍     SiteMesh的是应用Decorator模式,以允许从表现内容的完全分离一个轻量级的,灵活的Java Web应用程序框架. siteMesh框架是OpenSymphony团队开发的一个非常优秀的页面装饰器框架,它通过对用户请求进行过滤,并对服务器向客户端响应也进行过滤,然后给原始页面加入一定的装饰(header,footer等),然后把结果返回给客户端.通过SiteMesh的页面装饰,可以提供更好的代码复用,所有的页面装饰效果耦合在目标页面中,无需再使用include指令来包

【ModelMap】jsp中显示springmvc modelmap传递的对象

最近在做一个小网站,功能非常基础,决定用springmvc搭建. 遇到一个问题,在controller向前端传值时,比如使用ModelMap传了一个字符串,modelmap.addattribute("msg", "hello"),那么在jsp端,直接使用${msg}就可以显示.接着,如果我传递了一个对象,依然可以使用${obj.name}这样的方法来显示该对象的各个属性.然而更多情况下,都需要显示列表,所以我传递了一个List<User>对象,但是在解

JSP中关于tag的学习

tag作用:编写调用tag实现代码复用.能防止用户直接访问tag页面.Include只能做到代码复用,但是不能防止用户在地址栏直接输入地址访问. 优点:     1.实现代码的复用 2.分离数据处理代码和数据显示代码,便于web应用的维护,和再开发 tag文件的保存:保存在WEB-INF/tags/下 tag标记: 格式一:<Tag 文件名 /> 格式二:<Tag 文件名> 标记体 </Tag 文件名> 在没有标记体的情况下只能用格式一,格式二会将标记体传入tag文件中

Windows Phone中使用Storyboard做类似 IOS 屏幕小白点的效果

windows phone中做动画其实很方便的,可以使用Blend拖来拖去就做出一个简单的动画,下面做了一个 ios屏幕小白点的拖动效果,包括速度判断移动 使用Blend生成以下代码 <Storyboard x:Name="HandFunGTLSb"><!-- 向左滑动时动画 --> <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransfo

JSP中EL表达式的应用以及常用的方法

EL表达式      1.EL简介 1)语法结构        ${expression} 2)[]与.运算符      EL 提供.和[]两种运算符来存取数据.      当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号,就一定要使用 []. 例如:          ${user.My-Name}应当改为${user["My-Name"] }      如果要动态取值时,就可以用[]来做,而.无法做到动态取值.例如:          ${sessionScop

(转)Spring3MVC 在JSP中使用@ModelAttribute

原文连接:http://liukai.iteye.com/blog/973717,仅供自己参考. 在教程中,我们将创建一个简单的Spring3MVC simple CRUD应用程序. 什么是@ModelAttribute  Spring3关于@ModelAttribute的文档 引用 @ModelAttribute has two usage scenarios in controllers. When you place it on a method parameter, @ModelAttr

JSP中的TAG

http://blog.csdn.net/hongweigg/article/details/12006849 JSP标签有两种实现方法,一种是使用tag 文件,一种是使用tld文件. 1.使用tag文件 标签名和tag文件名一致, tag文件为JSP文件,可以有属性,把JSP页面当JavaBean文件一样使用. 例子: 1)WEB-INF/lib下放置TAG文件:MyTag.tag,那么就有了一个名为MyTag的标签: [html] view plaincopy <%@ tag pageEnc

JSP中的EL表达式详细介绍

一.JSP EL语言定义 EL 提供了在 JSP 脚本编制元素范围外使用运行时表达式的功能.脚本编制元素是指页面中能够用于在 JSP 文件中嵌入 Java 代码的元素.它们通常用于对象操作以及执行那些影响所生成内容的计算.JSP 2.0 将 EL 表达式添加为一种脚本编制元素. 二.JSP EL简介 1.语法结构     ${expression}2.[ ]与.运算符     EL 提供“.“和“[ ]“两种运算符来存取数据.     当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数

jsp 中声明方法的使用

1.在"<%!"和"%>"之间声明方法,该方法在整个JSP页面有效,但是该方法内定义的变量只在该方法内有效.这些方法将在Java程序片中被调用,当方法被调用时,方法内定义的变量被分配内存,调用完毕即可释放内存.当多个客户同时请求一个JSP页面时,他们可能使用方法操作成员变量,对这种情况应给予重视. 解决办法:通过synchronized方法操作一个成员变量来实现一个计数器 <%@ page contentType="text/html;c