JSP静态导入(JSP指令标记include)
JSP页面第一次被请求时,会被JSP引擎转译成Servlet的Java文件,然后再被编译成字节码文件执行。JSP指令标记为JSP页面转译提供整个页面的相关信息。
include指令用于在JSP页面静态插入一个文件,被插入的文件可以是JSP页面、HTML页面、文本文件或一段Java代码。使用了include指令的JSP页面在转换成Java文件时,将被插入的文件在当前JSP页面出来该指令的位置做整体的插入,合并成一个新的JSP页面,然后JSP引擎再将这个新的JSP页面转译成Java文件。(动态导入中是先处理被包含JSP页面,在将处理后的结果插入到当前JSP页面)因此,必须保证插入文件后形成的新的JSP页面符合JSP语法和逻辑规则。include指令的使用格式为:
1
|
<%@ page include file=
"文件的URL"
%>
|
1
|
<%@ page include file=
"text/head.txt"
%>
|
使用include指令可以实现代码的复用,提高代码的使用效率。例如,页面一般都需要一个标题栏、导航栏、页脚等,用户可以将标题栏等写成单独的文件,每个JSP页面都可以在适当的位置用include指令插入标题栏、导航栏、页脚等文件,这样就极大地提高了代码的复用和效率,使代码更便于修改。
值得注意的是,被插入的文件是文本文件时需注意在文件的开始部分指明文件的相关信息,这样方便JSP页面和被嵌入的文件合并生成一个新的JSP页面不至于出现乱码等问题。例如(head.txt):
1
2
3
|
<%@ page contentType=
"text/html;charset=GB2312"
%>
<h1> ..头部信息..</h1>
<div> ... </div>
|
JSP动态导入(jsp:include动作标记)
include动作标记用来在JSP页面中动态包含一个文件,如果被包含的页面是JSP页面,则先处理之后再将结果包含,而如果包含的是非*.jsp文件,则只是把文件内容静态包含进来。包含页面程序与被包含页面程序是彼此独立的,互补影响。jsp:include标记的一般使用格式为:
1
2
3
4
5
|
<jsp:include page=
"文件的URL"
>
或
<jsp:include page=
"文件的URL"
>
<jsp:param 子标记=
""
>
</jsp:param></jsp:include></jsp:include>
|
JSP动态导入与静态导入的区别:
1、处理时间和方式不同:include指令标记插入的文件在页面转译时就合并到一起了,被包含文件与当前页面组合而成的新页面必须符合JSP的语法和逻辑规则,由于是提前合并编译,所以执行速度快;而jsp:include动作标记是被包含文件语法和逻辑独立于当前页面,单独被JSP引擎编译,当前页面执行时再将被包含文件的运行结果传送给客户端,由于是执行页面时处理包含文件,所以执行速度慢,但可以利用param子标记传递参数,使用更灵活。
2、适用情况不同:静态导入适合导入不会经常变化的资源例如html文件,而动态导入适合一个时常变化的资源例如JSP文件。
参考网站:JSP静态导入与动态导入
个人总结
JSP静态导入<%@ include file="" %> :所谓的静态指不预先处理被包含页面,而是直接将被包含页面的内容原封不动地整体(所以必须保证插入后形成的新的JSP页面符合JSP语法和逻辑规则。)插入到当前页面中的include位置。(然后再由JSP引擎转译成Servlet的Java文件,再编译成字节码文件。请求页面时,再执行这个字节码文件。)
适用于不经常变化的被包含页面。
JSP动态导入<jsp:include file=""> :所谓的动态包含指,当请求被包含页面时,先处理被包含页面,然后将被包含页面的处理结果插入到当前页面中的jsp:include位置。
适用于经常变化的被包含页面。
无论是静态包含还是动态包含,其request对象都是同一个。
参考网站:JSP中的动态包含和静态包含的区别