`
liuzhiqiang19890403
  • 浏览: 60974 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

html页面中包含html或者jsp页面

 
阅读更多
如何将一个HTML页面嵌套在另一个页面中

2010-05-05 16:45 559人阅读 评论(1) 收藏 举报

这个在做网页中常要用到,有些通用的内容可集中放在一个页面文件中,其它要用到这些内容的页面只需要包含(引用)这个通用文件即可。这样便于维护,如果有很多网页,当通用内容需要修改时,只改一个文件就可以了,不需要每个文件单独修改。

最典型的应用比如页脚的版权信息等内容可以放在一个叫做footer.html文件里, 然后其他页面文件在页面内容的最后包含这个文件就可以了,具体例子下面有。

要html文件嵌套,最简单的办法是使用SSI(Server Side Include)技术,也就是在服务器端两个文件就被合并了。除了少数免费网页寄存服务外,几乎所有的网页寄存服务器都支持 SSI。这也是一个比较推荐的方法,它与ASP和ASP.NET网页使用的语法一模一样。如果网站管理员偏向使用PHP或JSP的话,语法会稍有不同。

对于不能使用SSI、ASP、ASP.NET、PHP和JSP等服务器端动态页面语言的情况,这里还将介绍两种客户端镶嵌的办法:JavaScript和iframe的方法。当这两种客户端的方法都有很大的弊病,一般不推荐使用。

下面对各种方法单独具体介绍。

1、SSI (Server Side Include)

SSI是一种简单的动态网页制作技术,但是有些服务器要求网页文件扩展名为.shtml才能识别文件中SSI命令。所以如果你的SSI命令看起来不工作,先别放弃,试着把文件扩展名改为.shtml,也许会成功。如果知道自己的服务器是否支持SSI,请看另一篇文章。

使用SSI一个局限性是页面一定要放在网页服务器上才能看到效果,在本地是不好调试的。当然,如果非要在本地调试,就本地装一个Apache服务器好了。

比如你想在每个网页的底部加上同样的版权信息,像

© 2009 程序员实验室 版权所有

可以把这行信息放到一个叫做footer.html的文件里,footer.html的内容为:

<center> &copy; 程序员实验室 版权所有</center>;

这样同一路径下的其他页面文件要包含footer.html的SSI命令是:

<!- #include virtual="footer.html" ->(常用)

或者

<!- #include file="footer.html" ->

这两者的几乎是一样的,不同之处在于include virtual后面取的是一个URL形式的路径,甚至还可以执行一个CGI程序并包含其输出结果,如果你的服务器支持CGI的话。而include file后面取的是一个文件系统路径,并且不能执行CGI程序。两者都可以接受相对路径,所以对上面这个简单例子,两者的效果是一样的。如果你不知道URL路径与文件系统路径两者的区别的话,就用include virtual

更多关于SSI的介绍,请看这篇SSI的介绍文章

2、PHP

如果你的服务器支持PHP的话,用PHP引用footer.html文件的写法如下:

<?php include("footer.html"); ?>

这句命令所在的文件扩展名必须被为.php。

除了引用本服务器上的文件,PHP的include命令还可以用来引用其它网站上的html文件,比如:

<?php include(http://www.prglab.com/examples/footer.html); ?>

当然你要得到其它网站的允许才能引用别人的文件。

3、ASP和ASP.NET

如果你使用的是老式的ASP,则语法是与上面SSI一样的,不需要任何修改,只要把命令所在文件的扩展名改为.asp即可。

对于ASP.NET,也是类似,不同之处在于,因为SSI命令是在ASP命令运行之前被首先编译,所以文件名中不能够使用ASP.NET的变量。如果一定要用的话,就用ASP.NET的命令来做文件嵌套吧。

比如:

<%

          Response.WriteFile ("footer.html")

%>

更多关于怎样在ASP.NET中实现动态文件嵌套,请参考微软的这篇文章

4、JSP (Java Server Page)

JSP文件需要在基于Java的服务器上运行,比如Apache Tomcat。JSP包含文件的语法是:

<%@ include file="footer.html" %>

5、客户端包含

5。1 客户端包含的利弊

客户端包含有两种方式:JavaScript和iframe。让我们先看看两种方法各有什么利弊。

两种方法中Javascript生成的页面格式比较好,Javascript可以从一个URL取到页面片断然后镶嵌在另一个页面的任何位置 。其结果与服务器端包含的结果基本上一样,但弊端是客户端必须开启Javascript功能(目前大多数人是选择开启的,但也有少数出于安全方面的考虑不开启)。另一个弊端是搜索引擎是看不到由Javascript包含的页面的内容的,这对你的网站推广比较不利。

使用iframe比较简单,它可以强制一个HTML页面镶嵌在另一个页面中,类似于是用 object控件将Flash电影、录像、或者MP3播放器嵌入一个页面中。使用iframe,用户端不需要开启Javascript功能。但不利的方面是iframe有固定的高度和宽度,不能随着被嵌入页面的大小而改变。当被嵌入页面大于给定高宽度时,会显示滚动条(当然你也可以使用 scrolling = "no" 来强制滚动条不显示,但这样页面内容会显示不完整),影响页面美观。另外就是搜索引擎可能不收录iframe引用的页面,不利网站推广。

5。2 使用JavaScript的客户端包含

这个方法主要适用于Firefox浏览器(任何操作系统)、IE5以上(Windows)、苹果的Safari浏览器(MacOS X),可以使用一项叫做XMLHTTP 的API技术来通过Javascript程序读取一个动态读取一个XML文件。这种方法也可以用来读取一个HTML文件,并放到当前网页文件的指定位置。

专业网站设计者:不要用这个! 也许在某些情况下你不得不用JavaScript来实现网页嵌套,但是这只是一种转弯抹角的替代方法。当你的服务器可以支持前面讲的服务器端嵌套方法时,尤其是专业人士,应尽可能避免使用这种方法,因为你的客户可能会投诉你做的网页内容无法被Google搜索到,或不能在某些浏览器中正常显示。

记住这种方法做的网页只能在Firefox,Safari,和IE5以上版本的浏览器中正常显示。大部分人都是用这几种浏览器的,但是不是所有人,而且有些用户因为安全因素考虑会关闭Javascript功能。

重要提示:如果你是在本地电脑上调试网页而不是在服务器上浏览,最新版本的IE浏览器会自动屏蔽Javascript动态生成的部分,并显示警告信息,你必须选择”允许显示动态内容”网页才能正常显示。当你把这些网页文件放到服务器上去的时候这个问题就会自动消失的,因为IE会辨别出主页和被包含的网页内容都来自同一个服务器。

好了,说了够多了,下面是具体怎么做。把以下代码放在网页的<head>里面:

<script>
function clientSideInclude(id, url) {
var req = false;

// Safari, Firefox, 及其他非微软浏览器
if (window.XMLHttpRequest) {
try {
req = new XMLHttpRequest();
} catch (e) {
req = false;
}
} else if (window.ActiveXObject) {

// For Internet Explorer on Windows
try {
req = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
req = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
req = false;
}
}
}
var element = document.getElementById(id);
if (!element) {
alert("函数clientSideInclude无法找到id " + id + "。" +
"你的网页中必须有一个含有这个id的div 或 span 标签。");
return;
}
if (req) {
// 同步请求,等待收到全部内容
req.open(’GET’, url, false);
req.send(null);
element.innerHTML = req.responseText;
} else {
element.innerHTML =
"对不起,你的浏览器不支持" +
"XMLHTTPRequest 对象。这个网页的显示要求" +
"Internet Explorer 5 以上版本, " +
"或 Firefox 或 Safari 浏览器,也可能会有其他可兼容的浏览器存在。";
}
}
</script>
有了这段代码我们就可以在网页的任何位置插入另一个页面了。首先我们要生成一个作为”容器”的HTML控件,比如<span>,并给这个”容器”控件一个ID,比如includefooter,然后把这个ID和要包含的页面的URL地址传递给前面写的这个js函数clientSideInclude就可以了。

一个需要注意的地方是函数clientSideInclude只有在页面被完全加载后才能工作,所以我们需要在<body>标签的onload事件上来调用这个函数,这是最保险的调用时机,因为这个事件触发的时候浏览器肯定已经完全解析了页面中所有HTML了。

所以,具体代码是:

在需要插入另一页面的地方写:
<span id="includefooter" > </span>

在页面开始处标签里写:
<body onLoad="clientSideInclude('includefooter', 'footer.html');>

当然,你也可以把函数clientSideInclude放在一个单独的文件里面,比如命名为clientSideInclude.js,然后在你的页面<head>标签中插入下面这<script>标签以便可以调用这个函数:
<script src="clientSideInclude.js" language="JavaScript"> </script>

5。3 使用iframe的客户端包含

客户端页面嵌套还可以使用iframe的方法,弊端是必须事先想好被嵌套的页面在首页中要占多大的位置。如果被嵌套页面太大,超过事先定义的宽度或高度,则首页会出现滚动条。这也许正是你所需要的,但也许会完全破坏主页的设计。

iframe的使用很简单,下面的例子会在你的页面中嵌入另一个叫做include.html的页面:

<iframe src="included.html" width="450" height="400" >

<a href="included.html">你的浏览器不支持iframe页面嵌套,请点击这里访问页面内容。</a>

</iframe>

这里主页中定义了要插入的页面将显示的高度为400的像素,宽度为450个像素。

我们为什么要在 iframe的里面插入一个普通的超级链接元素<a>呢?这是因为老版本的浏览器和搜索引擎不支持iframe,虽然现在已经很少有人还会使用Netscape 4这样老的浏览器了,但是几乎所有人都会使用象Google这样的搜索引擎。在iframe里面加上超级链接可以帮助搜索引擎找到网页的内容。

另外我们可以定义iframe的一些属性来控制网页的显示效果 ,除了前面用到的最常用宽度(width)和高度(height)的定义外,如果在任何情况下都不希望出现滚动条的话,可以定义iframe的scrolling属性等于"no"。如果不希望镶嵌页面的周围出现边框的话,可以将frameborder属性设置为0。下面这个例子显示了scrolling和frameborder属性的使用:

<iframe src="included.html" width="450" height="400" frameborder="0" scrolling="no">

<a href="included.html">你的浏览器不支持iframe页面嵌套,请点击这里访问页面内容。</a>

</iframe>

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    动态Jsp页面转换成静态Html页面

    然而,为了提高网站性能,降低服务器负载,并优化搜索引擎优化(SEO),经常需要将动态JSP页面转换为静态HTML页面。这个过程称为静态化,它能够使网页在客户端直接加载,而无需每次请求时都执行服务器端的Java代码。...

    页面静态化实例,jsp转化成html

    然而,每次有用户请求JSP页面时,服务器都需要解析其中的Java代码,生成HTML并发送到客户端。这一过程会消耗服务器资源,尤其是在高并发情况下。 页面静态化则是将这些动态生成的HTML提前生成并存储,后续的请求...

    jsp转html页面

    **JSP静态化** 是一个优化策略,它的核心思想是将频繁访问的JSP页面转换为静态HTML页面,从而减少服务器的计算负载,提高网站的响应速度和用户体验。这个过程通常称为JSP到HTML的转换。 1. **静态页面的优势** - *...

    jsp登录页面设计源代码

    jsp登录页面设计源代码 jsp登录页面设计是指使用jsp语言来...jsp登录页面设计需要考虑到多个方面,包括HTML代码设计、样式设计、表单设计、jsp页面设计、认证机制、Session管理、页面跳转、数据库访问和Error处理等。

    jsp页面制作的模板

    JSP支持在页面中嵌入JavaScript,或者通过`&lt;script&gt;`标签引用外部JS文件。 4. **整合Java代码**:JSP的核心优势在于其动态性。可以使用Java脚本来处理服务器端的任务,如从数据库读取个人信息、动态生成内容等。在...

    jsp页面人力资源管理系统静态页面

    总之,"jsp页面人力资源管理系统静态页面"是一个基于JSP技术的项目,包含了一系列静态HTML页面,用于构建一个完整的人力资源管理系统。这些页面与后端服务器紧密配合,提供用户友好的界面和高效的数据处理能力,实现...

    JSP 登录跳转页面

    在本节中,我们将详细介绍 JSP 登录跳转页面的实现细节,包括首页登录页面、判断 check 页面和最后的成功登录显示页面。 首页登录页面 首页登录页面是用户登录系统的入口点。该页面是使用 JSP 语言编写的,名称为 ...

    jsp图片轮播html

    JSP页面在服务器上执行后,生成的HTML响应被发送到客户端浏览器进行渲染。 【标签】"图片轮播"、"jsp"和"java"表明这个项目的核心是实现一个基于JSP和Java的图片轮播功能。图片轮播是一种常见的网页元素,用于展示...

    jsp页面加载时提示loading

    9. **JavaScript阻塞渲染**:如果JSP页面中存在阻塞渲染的JavaScript代码,浏览器会在执行完这些代码后才继续渲染页面。将脚本放在`&lt;body&gt;`标签底部,或使用`async`或`defer`属性可以避免这种问题。 10. **JSP预...

    使用jsp完成网页页面日历

    1. 在JSP页面中,首先获取当前日期,然后计算出月份的天数。 2. 创建HTML表格结构,用循环生成月份的每一天。 3. 使用CSS为日历添加样式,如边框、对齐方式、颜色等。 4. 添加交互功能,比如点击日期后高亮显示或...

    JSP动态生成HTML静态页面源码

    JSP动态生成HTML静态页面是一种优化网站性能的技术,它能够将频繁访问的动态内容转换为静态HTML页面,从而减轻服务器负担,提高网页加载速度。本源码提供了实现这一功能的具体方法。 首先,我们需要理解JSP的工作...

    简单的JSP页面布局

    3. **Include指令**: JSP中的`&lt;jsp:include&gt;`指令用于在运行时将一个或多个静态或动态资源插入到当前JSP页面中。这种方法可以实现页面的模块化,提高代码复用性。例如,我们可以将头部和底部信息分别保存为单独的...

    jsp_html_web_实现页面跳转

    一、JSP页面跳转 1. **隐式转发(Internal Forward)**:在同一个应用内部,可以通过`RequestDispatcher`的`forward()`方法进行页面跳转。这种方式不会生成新的HTTP请求,而是服务器端将请求数据传递到目标页面,...

    jsp简单注册,登录页面

    2. **JSP语法**:在JSP页面中,我们可以使用`&lt;jsp:include&gt;`、`&lt;jsp:useBean&gt;`、`&lt;jsp:setProperty&gt;`等指令进行页面包含、创建Java对象以及设置对象属性。此外,还可以使用脚本元素`&lt;% %&gt;`、`&lt;%= %&gt;`、`! %&gt;`, 分别...

    JSP页面缓存的简单实现 (可用于 content-type 为字符类型的JSP页面).zip

    这个资源可能包含了一个简单的服务器端缓存实现,可能的做法是使用HashMap或者其他数据结构来存储JSP页面的键值对,键是页面URL或者页面ID,值是预生成的HTML字符串。当接收到新的请求时,首先检查缓存中是否存在该...

    html+jsp的个人博客模板

    JSP文件通常以`.jsp`为扩展名,但在这个案例中,由于没有具体的JSP文件列出,我们可以假设博客的动态功能可能是在服务器端通过Java Servlet或者Spring MVC等框架实现的,而HTML文件则作为视图层模板,展示数据。...

    JSP商品详细信息页面

    JSTL提供了一系列预定义的标签,如fmt、sql、c等,而EL简化了在JSP页面中获取和操作数据的方式。 8. 安全性:考虑到用户可能直接与数据库交互,商品详情页需要防范SQL注入等安全威胁。开发者应使用预编译语句、参数...

    JSP页面与JSP标记.ppt

    本章将深入探讨JSP语法,包括HTML语法、JSP页面结构、变量与方法的声明,以及Java程序片、Java表达式、JSP指令和动作标记的使用。 ### 2.1 JSP页面的基本结构 JSP页面由五个主要元素构成: 1. **HTML标记符**:...

    炫酷的登录jsp页面完整代码

    如果用户名和密码需要动态验证,开发者需要在JSP页面中编写Java代码来连接数据库并进行身份验证。 【改进建议】:为了将固定用户名和密码改为动态验证,开发者需要创建一个Java Servlet或者Controller来处理登录...

    jsp转html(可以运行的程序)

    在Web应用程序中,JSP是一种动态网页技术,允许开发者将Java代码嵌入到HTML页面中,以实现服务器端的逻辑处理。而HTML则是静态网页的标准标记语言,用于描述网页的结构和内容。 转换JSP到HTML的主要目的是将动态...

Global site tag (gtag.js) - Google Analytics