首页编程jspinclude,jspinclude 和 include的区别

jspinclude,jspinclude 和 include的区别

编程之家2023-11-03142次浏览

尊敬的读者,jspinclude和jspinclude 和 include的区别是当前备受关注的话题,但许多人对其仍存在疑惑。在本篇文章中,我将为你提供清晰的解释和深入的分析,希望能满足你的求知欲望。

jspinclude,jspinclude 和 include的区别

jspinclude 和 include的区别

在jsp中include有两种形式,分别是

<%@ include file=””%>

<jsp:include page=”” flush=”true”/>

前者是指令元素、后者是行为元素。具体它们将在何处用?如何用及它们有什么区别?这应该是很多人看到它都会想到的问题。下面一起来看看吧。

通常当应用程序中所有的页面的某些部分(例如标题、页脚和导航栏)都相同的时候,我们就可以考虑用include。具体在哪些时候用<%@ include file=””%>,哪些时候用<jsp:include page=”” flush=”true”/>.这种形式。首先要明白的是它们之间的区别。只有了解了它们用法的不同才理解该在何时去用以及如何选择。

<%@ include file=””%>,jsp的include指令元素读入指定页面的内容。并把这些内容和原来的页面融合到一起。(这个过程是在翻译阶段:也就是jsp被转化成servlet的阶段进行的。)

jspinclude,jspinclude 和 include的区别

这里对翻译阶段进行一下说明:我们知道,jsp页面不能原封不动地被传送给浏览器,所有的jsp元素都必须首先由服务器进行处理。这是通过将jsp页面转达化成servlet,然后执行这个servlet来完成的。服务器需要一个jsp容器来处理jsp页面。jsp容器通常以servlet的形式来实现,这个servlet经过配置,可以处理对jsp页面的所有请求。

Jsp容器负责将jsp页面转化成servlet(称为jsp页面实现类?JSP Page implementation class),并编译这个servlet。这两步就构成了翻译阶段.

由此我们就会知道:jsp页面是把include指令元素所指定的页面的实际内容(也就是代码段)加入到引入它的jsp页面中,合成一个文件后被jsp容器将它转化成servlet。可以看到这时会产生一个临时class文件和一个java文件。

jsp中include指令的作用是什么

<jsp:include>

包含一个静态或动态文件.

JSP语法

jspinclude,jspinclude 和 include的区别

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

or

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

<jsp:param name="parameterName" value="{parameterValue|<%= expression%>}"/>+

</jsp:include>

Examples

<jsp:include page="scripts/login.jsp"/>

<jsp:include page="copyright.html"/>

<jsp:include page="/index.html"/>

<jsp:include page="scripts/login.jsp">

<jsp:param name="username" value="jsmith"/>

</jsp:include>

描述

<jsp:include>元素允许你包含动态文件和静态,这两种包含文件的结果是不同的。如果文件仅是静态文件,那么这种包含仅仅是把包含文件的内容加到jsp文件中去,而如果这个文件动态的,那么这个被包含文件也会被Jsp编译器执行(这一切与asp相似)

你不能从文件名上判断一个文件是动态的还是静态的,比如aspcn.asp就有可能只是包含一些信息而已,而不需要执行。<jsp:include>能够同时处理这两种文件,因此你就不需要包含时还要判断此文件是动态的还是静态的.

如果这个包含文件是动态的,那么你还可以用<jsp:param>还传递参数名和参数值。

属性

page="{relativeURL|<%= expression%>}"

参数为一相对路径,或者是代表相对路径的表达式.

flush="true"

这里你必须使用flush="true",你不能使用false值.缺省值为false

<jsp:param name="parameterName" value="{parameterValue|<%= expression%>}"/>+

<jsp:param>子句能让你传递一个或多个参数给动态文件

你能在一个页面中使用多个<jsp:param>来传递多个参数

jsp的<%@include和<jsp:include>的问题

举个例子,你现在的index.jsp,要包含一个文件abc.jsp.

-首先,<%@include file="abc.jsp"%>这个是include directive

如果,你选用这个include,那么意味着,abc.jsp里的所有Java,HTML代码原封不动的都被复制粘贴到当前的文件。和你手动复制粘贴效果是一样。这个的作用就是省了复制粘贴的功夫了。当访问index.jsp的时候,这个request(请求),是一次性完成。

-其次,

<jsp:include page="abc.jsp" flush="true">

<jsp:param name="name" value="abc"/>

</jsp:include>

这个是include action,或叫include tag。当你使用这个的时候,意味着你访问abc.jsp,然后把abc.jsp输出的HTML(注意,和在IE里看到的HTML是一样)全部放到你include的位置。当访问index.jsp的时候,这个request(请求),是用户先请求index.jsp,然后服务器再自动请求abc.jsp,合成最终的index.jsp,然后response(回应)给客户端。

-二者比较:

1.二者一个是直接包含原代码,一个是包含请求出的HTML。

2.用<jsp:include>的话,如果abc.jsp里有response.redirect("")或者response.addCookie("")等等关于response的操作,都回被忽视。也就是说用户不回被送到另一个页面。

但此时用<%@include>的话,abc.jsp里所有动response的操作都会正常运行。

3.用<jsp:include>因为它是向abc.jsp发送一个请求,所以请求可包含<jsp:param>,就是parameter(参数)。

若用<%@include>,就不可以加参数。

4.速度上,<%@include>会快一些,因为他只是处理一个请求。而<jsp:include>是处理两个请求,所以慢一点。

5.<jsp:include page="http://www.google.com/search?q=abc"/>这样都可以,相当于把有HTML包含。

但在<%@include file="abc.jsp"/>中,只可以包含你自己网站里的原始代码,也就是说abc.jsp必须存在,若不存在,会出现Compilation Error(编译错误)。

6.使用上<%@include>比较常用,一般用于检测用户是否登陆,或者网站的LOGO,网站的一些静态不变的信息。

<jsp:include>一般用于发送一个请求,并接受所回应的HTML。可以加入Parameter(参数)。

具体请看Sun的Documentation

<jsp:include>

http://java.sun.com/products/jsp/tags/11/syntaxref1112.html

JSP中include指令和include动作的区别

include指令是编译阶段的指令,即include所包含的文件的内容是编译的时候插入到JSP文件中,JSP引擎在判断JSP页面未被修改,否则视为已被修改。由于被包含的文件是在编译时才插入的,因此如果只修改了include文件内容,而没有对JSP修改,得到的结构将不会改变,所以直接执行已经存在的字节码文件,而没有重新编译。因此对不经常变化的内容,用include指令是合适的,如果需要的内容是经常变化的,则需要动作元素<jsp:include>.下面将详细区分他们之间的不同

1.include指令

include可以在JSP页面转换成Servlet之前,将JSP代码插入其中。它的主要优点是功能强大,所包含的代码可以含有总体上影响主页面的JSP构造,比如属性、方法的定义和文档类型的设定。

它的缺点是难于维护只要被包含的页面发生更改,就得更改主页面,这是因为主页面不会自动地查看被包含的页面是否发生更改。

语法:

1

<%@ include file="sample.jsp"%>

2.include动作

jsp:include动作是在主页面被请求时,将次级页面的输出包含进来。尽管被包含的页面的输出中不能含有JSP,但这些页面可以是其他资源所产生的结果。服务器按照正常的方式对指向被包含资源的URL进行解释,因而这个URL可以是Servlet或JSP页面。

服务器以通常的方式运行被包含的页面,将产生的输出放到主页面中,这种方式与RequestDispatcher类的include方法一致。它的优点是在被包含的页面发生更改时,无须对主页面做出修改。它的缺点是所包含的是次级页面的输出,而非次级页面的实际代码,所以在被包含的页面中不能使用任何有可能在整体上影响主页面的JSP构造。

语法:

<jsp:include page="sample.jsp" flush="true">

<jsp:param name="name" value="value"/>

</jsp:include>

其中参数设置可以没有,如果没有参数设置,则必须采用<jsp:include page="sample.jsp" flush="true"/>形式

3.使用include动作还是include指令?

使用include指令,如果被包含的文件发生改变,那么,用到它的所有Jsp页面都需要更新。

仅当include动作不能满足要求时,我们才应该使用include指令。

有些开发人员认为include指令生成的代码执行起来比使用include动作的代码更快。尽管原则上由可能的确如此,但性能上的差异很小,以致难以测量,同时,include动作在维护上的优势十分巨大,当两种方法都可以使用时,include动作几乎肯定是首选的方法。

对于文件包含,应该尽可能地使用include动作。仅在所包含的文件中定义了主页面要用到的字段或方法,或所包含的文件设置了主页面的响应报头时,才应该使用include指令。

既然include指令产生难以维护的代码,为什么人们还要使用它呢?

因为include指令更为强大。include指令允许所包含的文件中含有影响主页面的Jsp代码,比如响应报头的设置和字段、方法的定义。

例子://subpage.jsp

<%! int num=0;%>

//mainpage.jsp<html>

<body>

<%@ include file="subpage.jsp"%>

<%= num%>

</body><

/html>

当然使用include动作时这是不可能的,因为num变量未定义,主页面不能成功的转换成servlet。

感谢您的阅读!希望本文对解决您关于jspinclude的问题有所帮助。如果您还有其他疑问,欢迎随时向我们提问。

网址收录(什么叫网站收录,怎么查收录)黑马java教程,尚硅谷、黑马Java课程哪个讲更全面一些