jsp里面include的静态导入和动态导入的区别

静态导入就是将被导入页面完全融入到导入的页面中;而动态导入只是在servlet里面插入了include方法,导入的这是被导入页面的body标签里面的内容

1、什么是静态导入?

静态导入指的是,将一个外部文件嵌入到当前JSP文件中,同时解析这个页面的JSP语句,它会把目标页面的其他编译指令也包含进来。
include的静态导入指令使用语法:

复制代码 代码如下:

<%@include file="relativeURLSpec"%>

静态导入使用范例include1.jsp:

复制代码 代码如下:

<%@ page contentType="text/html; charset=utf-8" language="java" errorPage="" %>
<!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>静态include范例</title>
</head>
<body>
<!--使用include编译指定导入页面-->
<%@include file="error.jsp"%>
</body>
</html>

其中error.jsp是一个简单的错误处理页面,代码如下:

复制代码 代码如下:

<%@ page contentType="text/html; charset=utf-8" language="java" isErrorPage="true" %>
<!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>错误提示页</title>
</head>
<body>
这是一个错误处理页面</br>
</body>
</html>

在tomcat下运行该静态include范例后,查看生成的servlet类可看到如下代码段

(查看方式:windows下,找到tomcat安装目录下的work文件夹,进入Catalina文件夹下的localhost文件夹,找到当前项目所在的文件夹,找到org目录,进入其下的apache目录下的jsp文件夹,即可看到一个include1_jsp.java文件,这就是该include1.jsp对应生成的servlet类。ps:我是把这个测试页面放在webDemo下的,所以我的目录是\apache-tomcat-7.0.47\work\Catalina\localhost\webDemo\org\apache\jsp)

从方框中即可看出静态导入是:包含页面在编译时将完全包含被包含页面的代码。需要指出的是,静态导入还会将被包含页面的编译指令也包含进来,如果两个页面的编译指令有冲突,那么页面就会出错。

2、什么是动态导入

动态导入是不会导入include页面的编译指令的,而是仅仅将被导入页面的body内容插入本页面。
动态导入的语法格式:

复制代码 代码如下:

<jsp:include page="{relativeURL|<%=expression%>}" flush="true"/>

或者

复制代码 代码如下:

<jsp:include page="{relativeURL|<%=expression%>}" flush="true">
<jsp:param name="parameterName" value="parameterValue"/>
</jsp:include>

flush属性用语指定输出缓存是否转移到被导入文件中。如果指定为true,则包含在被导入文件中,如果指定为false,则包含在原文件中,对于JSP1.1旧版本,只能设置为false。
对于第二种语法格式,则可在被导入页面中加入额外的请求参数。

动态导入范例:

我们将上面的include1.jsp代码静态导入改为动态导入

复制代码 代码如下:

<%@ page contentType="text/html; charset=utf-8" language="java" errorPage="" %>
<!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>静态include范例</title>
</head>
<body>
<!--使用include编译指定导入页面-->
<jsp:include page="error.jsp" />
</body>
</html>

编译后查看生成的servlet代码,可以看到如下段:

红色方框中代码显示出,动态导入只是使用了一个include方法来插入目标页面的内容,而不是将目标页面完全融入到本页面中。
归纳起来,静态导入和动态导入有如下三点区别:

1、静态导入是将被导入页面的代码完全融入,两个页面融合成一个整体Servlet;而动态导入则在Servlet中使用include方法来引入被导入页面的内容。
2、静态导入时被导入页面的编译指令会起作用;而动态导入时被导入页面的编译指令则失去作用,只是插入被导入页面的body内容。
3、动态导入还可以增加额外的参数。即如下代码方式:

复制代码 代码如下:

<jsp:include page="{relativeURL|<%=expression%>}" flush="true">
<jsp:param name="parameterName" value="parameterValue"/>
</jsp:include>

原文地址:https://www.cnblogs.com/shiwanming/p/9735285.html

时间: 2024-08-04 21:05:46

jsp里面include的静态导入和动态导入的区别的相关文章

JSP-讲解(生成java类、静态导入与动态导入)

一.JSP技术简介 JSP是Java Server Page的缩写,它是Servlet的扩展,它的作用是简化网站的创建和维护. JSP是HTML代码与Java代码的混合体. JSP文件通常以JSP或JSPX的扩展名. JSP拥有自己的语法. JSP形式上像HTML,但本质上是Servlet. JSP的出现,使得将Web开发中的HTML与业务逻辑代码有效分离成为可能.通常JSP只负责生成动态的HTML文档,而业务逻辑由其他Java组件如JavaBean来实现.JSP可以通过Scriptlet来访问

JSP页面静态包含和动态包含的区别与联系

---恢复内容开始--- JSP页面静态包含和动态包含的区别与联系: 1.<%@ include file=" " %> 是指令元素,<jsp:include page=" "/> 是行为元素. 2.静态包含: 语法:<%@ include file=" " %>, 包含文件先是要直接复制一份内容到主体页面内,然后被包含的内容一起和主体转换成.class文件.只出现一个.class文件一个java文件,最终编译

iOS 中的静态库与动态库,区别、制作和使用

如果我们有些功能要给别人用,但是又不想公开代码实现,比如高德地图.第三方登录分享等等,这时候我们就要打包成库了.库分静态库和动态库两种: 静态库:以.a 和 .framework为文件后缀名.动态库:以.tbd(之前叫.dylib) 和 .framework 为文件后缀名. 静态库与动态库的区别 静态库:链接时会被完整的复制到可执行文件中,被多次使用就有多份拷贝.动态库:链接时不复制,程序运行时由系统动态加载到内存,系统只加载一次,多个程序共用(如系统的UIKit.framework等),节省内

静态库和动态库的区别

real framework中不可以使用类别 或 不可以不包含类文件 real framework 中直接调用NSClassFromString函数会返回null  需要强制加载指定类 或 直接通过类名引用 linux中静态库和动态库的区别 一.不同 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.库分静态库和动态库两种. 1. 静态函数库 这类库的名字一般是libxxx.a:利用静态函数库编译成的文件比较大,因为整个 函数库的所有数据都会被整合进目标代码中,他的优点就显而易见

静态库、动态库的区别汇总

real framework中不可以使用类别 或 不可以不包含类文件 real framework 中直接调用NSClassFromString函数会返回null  需要强制加载指定类 或 直接通过类名引用 linux中静态库和动态库的区别 一.不同 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.库分静态库和动态库两种. 1. 静态函数库 这类库的名字一般是libxxx.a:利用静态函数库编译成的文件比较大,因为整个 函数库的所有数据都会被整合进目标代码中,他的优点就显而易见

VS中Debug和Realease、及静态库和动态库的区别整理(转)

原文出自:http://www.cnblogs.com/chensu/p/5632486.html 一.Debug和Realease区别产生的原因 Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序.Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用. Debug 和 Release 的真正区别,在于一组编译选项. Debug 版本 参数 含义 /MDd /MLd 或 /MTd 使用 Debug ru

静态资源与动态资源的区别

静态资源:一般客户端发送请求到web服务器,web服务器从内存取到相应的文件,返回给客户端,客户端解析并渲染显示出来. 动态资源:一般客户端请求的动态资源,先将请求交于web容器,web容器连接数据库,数据库处理数据之后,将内容交给web服务器,web服务器返回给客户端解析渲染处理. 静态资源和动态资源的区别静态资源一般都是设计好的html页面,而动态资源依靠设计好的程序来实现按照需求的动态响应:静态资源的交互性差,动态资源可以根据需求自由实现:在服务器的运行状态不同,静态资源不需要与数据库参于

JSP静态导入与动态导入

JSP静态导入(JSP指令标记include) JSP页面第一次被请求时,会被JSP引擎转译成Servlet的Java文件,然后再被编译成字节码文件执行.JSP指令标记为JSP页面转译提供整个页面的相关信息. include指令用于在JSP页面静态插入一个文件,被插入的文件可以是JSP页面.HTML页面.文本文件或一段Java代码.使用了include指令的JSP页面在转换成Java文件时,将被插入的文件在当前JSP页面出来该指令的位置做整体的插入,合并成一个新的JSP页面,然后JSP引擎再将这

jsp静态导入和动态导入

动态导入:JSP:include仅仅是包含给界面的body 体不管里面有什么东西,统一编译出来被包含进来的界面编译指令会作用消失. 静态导入:@include要包含有该界面的解析的指令.这里面的神马都会包含进来的,title也要包含,甚至于title直接被篡改了.并且页面会被编译为两个servlet类的.编译指令依旧是有作用的,这就是为什么会有连个servlet界面了