1.为啥要使用

在开发jsp页面时,有很多网页使用的部分页面结构相同,这些相同的页面结构不仅添加时每个页面都要添加,而且如果要修改这些相同的地方都要修改,给开发及维护带来了工作量。

通过面向对象的问题思考问题:如果相同的部分抽离出来,使用继承的关系,基本的有父类定义,子类可以重写父类的变化的内容。父类可以有多个子类,子类只有一个父类,子类可以有很多子类,这样多层次的继承,可以解决以上问题

对于页面也是一样,如果把相同的部分页面结构抽离成一个父页面,使用到这个页面的子页面就可以继承这个父页面,可以覆盖自己与主页面不同的页面内容,也可以自己定义让子页面的子页面覆写。添加时 只要引入父页面并修改针对自己的内容就行不再关心相同的页面结构。在要修改相同页面结构时只要修改父页面内容,其下面引用的子孙页面都会得到相应的更新。

2.寻找答案

下面介绍一下用的到这种技术:rapid中的一种功能 原理和上面说的差不多

3.使用rapid

我主要用在了jsp页面中,所以只介绍下在jsp中的使用 所需要引入的jar 包:
rapid-core-4.0.jar

      <dependency><groupId>com.googlecode.rapid-framework</groupId><artifactId>rapid-core</artifactId><version>4.0.5</version></dependency>

因为这个功能主要在jsp页面中使用的,所以使用的标签库方式来实现的,因此先在jsp中引用标签库

<%@taglib uri=“http://www.rapid-framework.org.cn/rapid” prefix=“rapid” %>

主要页面:base.jsp child.jsp grandChildA.jsp grandChildB.jsp

先来看base.jsp即父页面 ,页面中使用了rapid:block定义了四个可以让子页面重写的内容块 head top content footer

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@taglib uri="http://www.rapid-framework.org.cn/rapid" prefix="rapid" %>
<%@taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><rapid:block name="head"><title>base head</title></rapid:block>
</head>
<body><rapid:block name="top">base top</rapid:block><rapid:block name="content">base content</rapid:block><rapid:block name="footer">base footer</rapid:block>
</body>
</html>

base.jsp生成后的页面:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title>base head</title>
</head>
<body>base topbase contentbase footer
</body>
</html>

下面是child.jsp这里面使用include引用了base.jsp,这样代表了直接使用了base.jsp页面,又使用rapid:override重写了header和content,并在content创建了一个mychild内容块

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@taglib uri="http://www.rapid-framework.org.cn/rapid" prefix="rapid" %><rapid:override name="head"><title>child head</title>    </rapid:override><rapid:override name="content">child content<rapid:block name="mychild">child mychild</rapid:block></rapid:override>
<%@include file="base.jsp" %>

注意:<%@include file=“base.jsp” %>应写在代码末尾:可能是在加载 base.jsp 文件是会先去查看本页面的 name ,如果本页面没有,则去找父页面的 name(本人猜测,具体还未查明,如有了解的小伙伴,请望告知)

child.jsp生成后的页面

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<span style="white-space:pre"> </span><title>child head</title>
</head>
<body>
<span style="white-space:pre"> </span>base topchild content
<span style="white-space:pre"> </span>base footer
</body>
</html>

原文链接:https://blog.csdn.net/zghwaicsdn/article/details/40719259

rapid:实现jsp页面代码的复用相关推荐

  1. JSP页面代码到源代码的转换

    jsp页面生成的源代码一般是通过浏览器来查看的 转换过程中,jsp页面中的html元素在源代码中被原样保留,只有jsp代码会发生改变 jsp页面代码 <%@ page language=&quo ...

  2. Eclipse 的 jsp 页面代码格式化

    在  Eclipse 内我们通常用 Ctrl + Shift + F 进行格式化,调整了代码格式化设置后,在Java/c/cpp 文件中均能很好的使用,但在 jsp 页面内,Ctrl + Shift ...

  3. java页面分页显示代码_通用分页jsp页面显示

    注:本章内容都是在上一篇文章 通用分页后台显示:https://www.cnblogs.com/ly-0919/p/11058942.html  的基础上进行改进,所以有许多的类都在上一篇, 带来不便 ...

  4. JSP页面传值出现中文乱码的问题

    在接收值的jsp页面代码的body里添加: <%request.setCharacterEncoding("utf-8"); %>  //这里是设置utf-8为jsp页 ...

  5. 前台jsp页面向后台传汉字出现乱码问题解决办法

    如下: jsp页面代码: var groupsName="全体技能组"; window.location.href = encodeURI("<%=path%> ...

  6. 从一个jsp页面跳转到另一个jsp页面时的参数传递

      1.从一个jsp页面跳转到另一个jsp页面时的参数传递 (1)使用request对象获取客户端提交的信息 login.jsp页面代码如下: [java] view plaincopy <%@ ...

  7. jsp页面直接生成pdf 所用js:html2canvas.js,jspdf.debug.js

    1.需要准备3个js (1)html2canvas.js (2)jspdf.debug.js 2.js部分代码段 function printpagePdf(){var printButton = d ...

  8. Myeclipse中项目没有代码错误提示,jsp页面无编译迹象?如何解决

    在使用Myeclipse开发项目时,发现jsp页面中嵌入的java代码没有编译的迹象,错误的get方法没有报错,没有报错信息我们如何知道我们开发的内容是正确的呢? 接下来就演示一下如何解决

  9. java 页面 分离 实现_JavaBean实现JSP页面和代码分离

    JavaBean实现JSP页面和代码分离以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在JSP编程中 Struts一般 ...

最新文章

  1. 破解出cmos密码(转载)
  2. Communications link failure
  3. 自已写的几个分页的存储过程
  4. Spring Boot——易班优课YOOC课群在线测试自动答题解决方案(二)答案储存
  5. 【转】Android:ListView常见错位之CheckBox错位
  6. 多个ip对应的是同一个mac_Python3+Scapy安装使用 + 查询本机对应网卡,IP,MAC代码...
  7. 同步异步 阻塞 非阻塞 异步调用 线程队列 协程
  8. Java中注解与反射的使用方法及场景,强行解释一波!
  9. C# 视频监控系列(15):总结贴——可能用到的C# WinForm技术小结
  10. 中国行政区划代码,包括五级行政区划详细代码,县级以上区划地理围栏
  11. STM32F103_study64_The punctual atoms(Simulator and downloader)
  12. 一个理解同步异步阻塞非阻塞非常好的解释
  13. 教学案例一python初探
  14. C语言编程练习:打印九九口诀表
  15. 创世卓越高清晰PDF图书下载 40本
  16. 教你九种 JVM GC 问题的排查方法
  17. 冷月手撕408之操作系统(3)-操作系统的发展及分类
  18. [设计模式]单例模式的几种不同写法比较
  19. 用两步排除法快速解答浮点数表示范围选择题
  20. 【DB笔试面试597】在Oracle中,获取执行计划有哪几种方法?

热门文章

  1. 【科普新力量】— 妙小程管春华:科普推动编程成为基础学科
  2. Windows XP中如何自动终止Blackice防火墙(转)
  3. 成绩管理系统//成绩预警系统(毕设级别)
  4. 解决PyCharm中的Manage Repositories为空
  5. 揭秘国内首个进入Apache的高校顶级项目——Apache IoTDB | 51CTO 访谈实录
  6. 程序员更容易遇到职场内卷
  7. 什么是DOCTYPE?
  8. LightSwitch初试
  9. 陈越《数据结构》第六讲 图(上)
  10. C# VS2019 Form 状态栏添加系统时间实时刷新