<%@page include%>、<%@include%>、<jsp:include>三者之间的本质区别

<%@page include%>、<%@include%>、<jsp:include>三者之间的本质区别

先从它的几个内置对象说起。

application和session比较简单,这里主要说明request和page的作用范围。

application:全局作用范围,整个应用程序共享,就是在部署文件中的同一个webApp共享,生命周期为:应用程序启动到停止。

session:会话作用域,当用户首次访问时,产生一个新的会话,以后服务器就可以记住这个会话状态。生命周期:会话超时,或者服务器端强制使会话失效。

request:请求作用域,就是客户端的一次请求。

page:一个JSP页面。

以上作用范围使越来越小, request和page的生命周期都是短暂的,他们之间的区别就是:一个request可以包含多个page页(include,forward以及filter)。举个简单的例子:

jsp1.jsp

<jsp:useBean id="beanID" class="xxx .xxx.BeanClass" scope="request" />

<jsp:include page="jsp2.jsp" /> 

jsp2.jsp

<jsp:getProperty name="beanID" property="sample" />

运行jsp1.jsp可以正常显示数据,因为作用范围是request,相当于调用了request.setAttribute()方法,

jsp2页通过request.getAttribute来获得这个bean.如果把request改为page,就会抛出NullPointerExceptioin.

一个请求可以跨好几个JSP(include和forword)和Servlet(如filter).不过这里有一个需要注意的就是区别

<jsp:include> 和<%@ include %>.如果上面的<jsp:include page="jsp2.jsp" />改为<%@ include file="jsp2.jsp" %>,即使scope为page也是正确的,<%@ include %>是编译时包含,<jsp:include>是运行时包含.前者就相当于宏,编译时替代,后者相当于函数,运行时返回.

<% @ page %> 只能包含静态内容。

原文地址:https://www.cnblogs.com/javaboy2018/p/9131929.html

时间: 2024-10-06 04:15:35

<%@page include%>、<%@include%>、<jsp:include>三者之间的本质区别的相关文章

jsp中的@include与jsp:include区别详解

1 前言 搞java开发的人也许都知道在jsp中引入项目中其他文件有如下两种方式 <%@include file="xxx.jsp"%> <jsp:include page="xxx.jsp"></jsp:include> 我们也许会使用这两种方式,但是也许很多人不名称这两种方式的区别.下面我们来看看下面的两个例子 2 开门见山引出问题 (1) /include/include.jsp <%@ page language=&

include与jsp:include区别

我们都知道在jsp中include有两种形式,分别是 <%@ include file=” ”%> <jsp:include page=” ” flush=”true”/> 前者是指令元素.后者是行为元素.具体它们将在何处用?如何用及它们有什么区别?这应该是很多人看到它都会想到的问题 一:执行时间上: <%@ include file=”relativeURI”%> 是在翻译阶段执行 <jsp:include page=”relativeURI” flush=”t

&lt;%@ include &gt; 与&lt; jsp:include &gt;

include指令表示在JSP编译时插入一个包含文本或者代码的文件,把文件中的文本静态地包含过去.也就是说,会把被包含的页面拷贝到包含的页面中指令所在的位置. 语法格式:<%@ include  file="relativeURL"%> relativeURL为包含进来的文件路径,可以是HTML,JSP文件,也可以是其他格式的文本文件. include在实际开发中到底有什么作用? 我们知道,在进行大型项目开发的时候,应尽量把各个组件模块化,JSP也是如此.例如,每个JSP页

&lt;%@include%&gt;和&lt;jsp:include&gt;的区别

<%@include%>:页面请求之前预编译,所有代码包含进来之后,一起进行处理,把所有代码合在一起,编译成一个servlet <jsp:include>:所有代码分别处理,在页面被请求的时候才编译,被编译成多个servlet,页面语法相对独立,处理完成之后再将代码的显示结果(处理结果)组合进来. 我自己写的代码: <%@ page language="java" contentType="text/html; charset=UTF-8&quo

&lt;%@include和jsp:include

最近在搞页面.引用了分页的嵌套页面,各种错,之前也做过类似的,很容易忘,所以在此记录下来,希望对开发的你们,也有所帮助. 简单点说它们的区别: <jsp:include page="">  父页面和包含进来的页面单独编译,单独翻译成servlet后,在前台拼成一个HTML页面. <%@include file=""%> 父页面和包含进来的页面,代码合并后,才一起翻译成servlet,反馈到前台,形成一个HTML页面. <jsp:incl

JSE,JEE,JME三者之间有什么区别

JAVA是一种面向对象语言由SUN公司出品 J针对不同的使用方向规划出J2SE,J2EE,J2ME三个版本 J2SE 指标准版一般用于用户学习JAVA语言的基础也是使用其他两个版本的基础主要用于编写C/S项目和提供标准的JAVA类库 J2EE 指企业版依托互连网技术提供企业级平台应用说白了就是用来构建大型网站和B/S系统 J2ME 指移动版为小型移动器械搭建使用平台主要是用来为手机编程,制作手机相关软件的 三个版本一个是做C/S项目如QQ 一个是做网站如163 一个是做手机系统如大部分手机的小游

&lt;%@ include file=""%&gt;与&lt;jsp:include page=""/&gt;区别

我们都知道在jsp中include有两种形式,分别是Include指令:<%@ include file=""%>和include动作:<jsp:include page="" flush="true"/>.前者是指令元素.后者是行为元素.具体它们将在何处用?如何用及它们有什么区别?这应该是很多人看到它都会想到的问题.下面一起来看看吧. 通常当应用程序中所有的页面的某些部分(例如标题.页脚和导航栏)都相同的时候,我们就可以

&lt;%@ include file=&quot;&quot;%&gt;与&lt;jsp:include page=&quot;&quot;/&gt;区别(转)

http://www.iteye.com/topic/312500/ 我们都知道在jsp中include有两种形式,分别是Include指令:<%@ include file=""%>和include动作:<jsp:include page="" flush="true"/>     前者是指令元素.后者是行为元素.具体它们将在何处用?如何用及它们有什么区别?这应该是很多人看到它都会想到的问题.下面一起来看看吧.    

&lt;jsp:include page&gt;和&lt;%@ include file%&gt;的区别

<%@include...> 与<jsp:include....>指令的区别 include指令: 在翻译阶段(将JSP页面转换成servlet的阶段),include会读入指定的页面中的内容,并将这些内容和原来的页面融合在一起 <%@ include file="header.html"%> 引入的页面可以只包含静态内容(例如HTML),也可以是一个普通的JSP页面.主页面和引入的页面融和在一起(引入的页面只是最为普通的文本进行融合,并不对动态内容