Java Web------jsp include指令和jsp标准动作jsp:useBean

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yuming226/article/details/80568929

一、jsp include指令

1.1、介绍

include指令用于在JSP编译时插入一个包含文本或代码的静态文件。该文件可是JSP文件、HTML文件、文本文件或是一段Java程序。其实只要是纯文本的文件就可以包含,它把静态文件和内容插入到当前位置。

include指令的语法格式:

<%@include file="relativeURL"%>

file属性为相对于当前JSP文件的URL。如果路径以“/”开头,那么这个路径主要是参考JSP应用的上下文路径。如果路径以文件名或者目录名开头,那么该路径就是相对于JSP文件的当前路径。

1.2、原理

include指令的作用是在JSP文件(.jsp)转换成Servlet(.java)时,静态第包含一个文件内容。这里的“静态”的含义如下:
(1)包含只是简单的复制代码
这种静态的包含只是原封不动地把被包含文件里的代码复制到主文件中<%@include file=%>的地方,和主文件形成一个新文件,然后再统一编译成一个Servlet。由于是复制式的代码包含,要注意主辅文件中的代码会相互影响,有时会产生冲突。如主辅文件均含有、或等这样唯一的标记,将产生冲突。
(2)所包含的URL必须是静态的

  • URL不能为一个URL变量或表达式。
  • URL中不能出现任何参数。

二、jsp:include

< jsp:include =” “>动作用于在当前的JSP页面中加入静态或动态的资源。
其基本语法为:

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

其中page属性指明需要包含的文件路径为相对路径,或者是代表相对路径的表达式。flush属性是指清除保存在输出缓冲区中的数据,其默认值是false,在< jsp:include >动作中该属性必须为true。

< jsp:include >允许包含动态文件和静态文件,并且JSP容器能够自动识别被包含的文件内容是动态的还是静态的。html文件、txt文件和无java脚本的jsp文件都属于静态文件。对于静态文件,那么这种包含仅仅是把包含文件的内容加到jsp主文件中。但如果这个文件是动态的,那么这个被包含文件也会被Jsp编译器转换成一个单独的Servlet,主页面只是调用这个次级页面的Servlet,包含的是次级页面运行产生的输出。需要注意的是:如果被包含的文件含有动态内容,则文件名的后缀应该为jsp,如果为其他的文件后缀,编译器将认为是静态文件,不执行编译操作,里面的动态内容的代码将被湖绿。

三、两者的区别:

1.执行时间上的区别:
<%@ include file=”relativeURI”%> 是在翻译阶段执行(将JSP页面转换成servlet的阶段)。
<jsp:include page=”relativeURI” flush=”true” /> 在请求处理阶段执行。

2.引入内容的方式区别:
<%@ include file=”relativeURI”%>适用于引入静态文本,也可以这么理解:它是纯粹的把部分代码写到了另一页面(或者说是共享),而那另一页面中不能有相同的变量名,但可以借用主页面的内容。
<jsp:include page=”relativeURI” flush=”true” />引入执行页面或servlet所生成的应答文本。

四、总结

1:<jsp:include page=”top.jsp” flush=”true” />:先将top.jsp中的java脚本和jsp指令都执行完毕以后再将top.jsp页面加入到引用页面中。

2:<%@ include file=”top.jsp”%>静态读取:则是将top.jsp的整个页面不加解析(无论是脚本还是指令)统统读入到引用页面中,然后和引用页面一起进行解析(即开始执行脚本和指令)。

参考连接:

https://www.cnblogs.com/sharpest/p/6117629.html
https://blog.csdn.net/wunai616568168/article/details/8315410

猜你喜欢

转载自blog.csdn.net/yuming226/article/details/80568929