JSP中include指令和include动作区别详解

别再手动算纹理了!用Python的skimage库5分钟搞定灰度共生矩阵(GLCM)和6大特征提取 本文介绍如何利用Python的skimage库快速实现灰度共生矩阵(GLCM)纹理分析,5分钟内完成从图像加载到6大特征提取的全流程。通过`greycomatrix`和`greycoprops`函数组合,开发者可以高效提取Contrast、Homogeneity等关键纹理属性,应用于医学影像、工业质检等领域,大幅提升工作效率。 阅读详情

我们都知道在JSP中include有两种形式,分别是

<%@ include file=” ”%>

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

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

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

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

这里对翻译阶段进行一下说明:我们知道,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文件。下面举个例子。

服务器用tomcat,引入页面的jsp文件叫test.jsp。被引入的页面叫date.jsp.这个jsp文件里存放的是一个有关时间的jsp代码,当前的上下文根设为test

date.jsp的源文件:

<%@ page language=”java” contentType="text/html;charset=gb2312"%>
<%
java.util.Date date=new java.util.Date();
String date_cn ="";
String dateStr = "";
switch(date.getDay())
{
case 0:date_cn ="日"; break;
case 1:date_cn ="一"; break;
case 2:date_cn ="二"; break;
case 3:date_cn ="三"; break;
case 4:date_cn ="四"; break;
case 5:date_cn ="五"; break;
case 6:date_cn ="六"; break;
}
dateStr = (1900+date.getYear()) + "年" + (date.getMonth()+1) + "月" + date.
getDate() + "日(星期" + date_cn + ")";
%>
document.write("<%=dateStr%>");
以下是test.jsp的源文件:
<%@ page language=”java” contentType=”text/html;charset=gb2312”%> 
<html> 
<head> 
<title>include的两种用法</title> 
<jsp:include page=”date。jsp” flush=”true”/> 
<%--@ include file=”date。jsp” %--> 
//我们在这里用include的两种不同形式来引入date。jsp这个文件。 
<head> 
<body> 
<table><tr><td> 
有关jsp中include的两种用法。敬请关注。 
</td></tr></table> 
</body> 
</html> 
在test.jsp 文件中,我们只输出了一行文本“ 有关jsp中include的两种用法.敬请关注。”,现在让我们先 用<%@ include file=”date.jsp” %>这种形式引入date.jsp这个文件。你想会出现什么问题了吗?此时出现 了错误提示:

HTTP Status 500 ?
org.apache.jasper.JasperException: /date.jsp(0,0) Page directive:
can't have multiple occurrences of contentType

以下还有一堆错误,但我们只要看这里就知道问题的所在了。状态码为http 500服务器内部错误。再看下面的提示。在date.jsp页面中不能指定多个contentType.

原因就在这里了。是因为在翻译阶段,date.jsp文件的代码被原封不动地加入到了test.jsp页面从而合成一个文件。合成后的文件中就会相同的:

<%@ page language=”java” contentType=”text/html;charset=gb2312”%>

这句代码。解决的办法是把date.jsp文件中的这句删掉,刷新后再请求test.jsp页面。

请求test.jsp在页面显示如下:

2003年12月10日 13:12:40
有关jsp中include的两种用法.敬请关注。

这时我们还不能发现什么。还是去查看tomcat下的临时文件吧。到那里去看看date.jsp文件的内容是否已被加入到了test.jsp文件中。

<注.此处的tomcat装在E盘根目录下>

目录

E:\tomcat\work\Standalone\localhost\test.

在这个目录下会看到

test_jsp.java和test_jsp.class两个文件。

这里的java文件就是jsp容器将jsp转化成了servlet而得到的test_jsp.java这个文件。

相对应的test_jsp.class这个文件就是编译test_jsp.java这个servlet文件产生的类文件了。打开所产生的servlet文 件(test_jsp.java)。此时我们会发现,在test.jsp 文件被转化成servlet文件时,在输出的<haed>之间加入 了一些不是test.jsp页面里面的代码,新加入的内容就是 date.jsp里面的代码: 新加入了哪些内容或是否真的加入了新的内容请自己测试去看 一下就会一目了然了.在这里不再详述.

以上就是我们用<%@ include file=”date.jsp”%>这种形式得到的结果.

下面我们换用<jsp:include page=”dae.jsp” flush=”true”/>也就是将<%@ include file=”date.jsp”%>换成<jsp:include page=”dae.jsp” flush=”true”/>,然后请求test.jsp.

2003? ê 12??10?? 13:30:13
有关jsp中include的两种用法.敬请关注。

此时会在页面上看见.我们所引入date.jsp输出的日期中中文出现了乱码.什么原因?是因为include行为元素是在请求处理阶段执行的(此处要对请求处理阶段进行说明一下,Jsp容器除了上面提到的负责将jsp页面转化成servlet外,还负责调用jsp页面实现类以处理每个请求并产生应答.这个阶段我们就称为请求处理阶段.请求处理阶段仅执行类文件)。

所以在我们作include行为元素引入页面时,实际只是引用了date.jsp这个文件被转化并被编译后产生的servlet类文件.既如此, date.jsp就是作为一个单独的文件在执行后才被test.jsp文件运行时调用.由于date.jsp文件中没有指定字符编码.所以出现了乱 码.解决办法是在date.jsp文件中重新把刚才去掉的

<%@ page language=”java” contentType=”text/html;charset=gb2312”%>

这行语句加入后刷新重新运行.此时页面显示正确,并跟用include指令正常运行时一样.再查看tomcat下的临时文件会发现.此时多出了一个 date_jsp.java文件和一个date_jsp.class文件.这两个文件得来的方式跟test_jsp.java 和 test_jsp.class文件得来的方式一样.再查看一下此时test_jsp.java文件的代码会发现.此时只新增加了一句代码:

JspRuntimeLibrary.include(request, response, "date.jsp", out, true);

它并没有把date.jsp文件的代码加入到test.jsp.

只是在运行时引入了date.jsp页面执行后所产生的应答.这意味着我们可以指定任何能够产生应答的Web资源,(例如一个servlet或一个jsp页面),只要这些资源所产生的类型和jsp页面产生的内容类型相同.JSP容器将通过一个内部的函数调用来执行指定的资源.因此,这些被引入的资源可以帮 助处理原来的请求,所以这些资源可以访问请求作用域内的所有对象.以及所有原来的请求参数.

由于在主页面被请求时,这些页面还没有被引入到主页面中,所以你可以对page属性使用一个请求时属性值,以便根据运行时的情况来决定要引入哪一个页面.还可以添加一些将被引入的页面读取的请求参数.

<jsp:include page=”<%=pageSelectedAtRuntime%>” flush=”true” >
<jsp:param name=”fitstParamer” value=”firstValue”>
<jsp:param name=”lastParamer” value=”lastValue”>
</jsp:include>

如果修改了被引入的jsp页面,那么可以立刻使用该页面的最新版本,这是因为对待被引入的页面的方式与对待由浏览器直接调用的jsp页面的方式完全相同.即容器检测页面的变化,并自动进入翻译阶段,以得到页面的最新版本.

注意:include动作元素同jsp其它元素一样,没有行为体时要以”/”结束.就像下面这样.<jsp:include page=”<%=pageSelectedAtRuntime%>” flush=”true” />

以下是对include 两种用法的区别,主要有两个方面的不同:

执行时间上:

<%@ include file=”relativeURI”%> 是在翻译阶段执行

<jsp:include page=”relativeURI” flush=”true” /> 在请求处理阶段执行.

引入内容的不同:

<%@ include file=”relativeURI”%>引入静态文本(html,jsp),在JSP页面被转化成servlet之前和它融和到一起.

<jsp:include page=”relativeURI” flush=”true” />引入执行页面或servlet所生成的应答文本.

另外在两种用法中file和page属性都被解释为一个相对的URI.如果它以斜杠开头,那么它就是一个环境相关的路径.将根据赋给应用程序的URI的前缀进行解释,如果它不是以斜杠开头,那么就是页面相关的路径,就根据引入这个文件的页面所在的路径进行解释。



原文出自:http://developer.51cto.com/art/200902/111134_1.htm 

 觉得写得不错,就转载过来了。

JSP中的include指令和include动作区别详解 当浏览器访问index.jsp时,include动作会在服务器端执行,并将被包含的文件的内容作为一个整体插入到index.jsp中,最终的结果同样会包含完整的页面内容。在上面的示例中,index.jsp通过include指令分别引入了header.jsp和footer.jsp两个文件的内容。当浏览器访问index.jsp时,被包含的文件的内容将被插入到index.jsp中,最终的结果会包含完整的页面内容。在运行时,include动作会在服务器端执行,并将被包含的文件的内容作为一个整体插入到当前页面中。 阅读详情

相关推荐

MAX31865模块温度测量

本文主要介绍MAX31865 测温注意事项,并写出读取温度的示例代码,模块详细参数可以查阅相关手册,

7453

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

一,语法上的区别 1.include指令:<%@ include file =“includeFile.jsp”%> 2.include动作:<jsp:include page =“jspInclude.jsp”> </ jsp:include>   二,处理方式不同 1.include指令:将被包含的文件原封不动的插入包含文件,JSP引擎对其同一编译...

emiLing1997的博客 4275

ISO7816协议深度解析-简单易懂协议详解(一)-- 复位,字符帧,及ATR

1. 摘要 IC卡必须支持T=0或T=1的协议,但不是同时支持这两种协议,而终端则必须同时支持T=0和T=1的协议。 • T=0通讯协议是异步半双工字符传输协议; • T=1通讯协议是异步半双工块传输协议; 在ISO7816-3标准中,具体规定了这两种协议:T0和T1。 IC卡所用的协议在TD1中指定,如果在复位应答信息中没有TD1,则表示用T=0的协议进行通讯。在复位应答后,IC卡和终端之间即用IC卡指定的协议进行通讯。 2. 硬件接口 1)VCC:电源输入(A类:5V, B类:3V) 2)GND:地 3

代码打工人的博客 4万+

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

include指令与动作的区别: (1)include 指令只能引入遵循 JSP 格式的文件,被引入的文件与当前 JSP 文件需要共同合并后才能翻译成一个 Servlet 源文件,最终编译的文件只有一个; 动作要引入的资源和当前 JSP 页面是两个彼此独立执行实体,即被引入的资源必须能够被 Web 容器独立执行,最终分别对两个文件进行编译。   (2)include 指令引入的资源是在编

3230

告别黑窗口!用VSCode+Native Debug调试C/C++程序,比GDB命令行舒服多了

本文介绍了如何使用VSCode配合Native Debug扩展来调试C/C++程序,替代传统的GDB命令行方式。通过可视化调试环境,开发者可以更高效地管理断点、查看变量和调用栈,大幅提升调试效率。文章详细讲解了环境配置、核心调试功能及高级技巧,帮助开发者快速上手这一现代调试工具。

weixin_26833139的博客 249

大规模新闻聚合爬虫实战:Python爬取数百万新闻数据的完整指南

本文详细介绍了如何构建一个大规模新闻聚合爬虫,结合Python异步爬虫技术,实现高效、稳定的新闻数据采集。增加NLP模块对新闻内容做自动分类、情感分析。引入机器学习模型检测新闻真实性。使用分布式爬虫框架进一步提升规模。增加多媒体内容抓取与处理。

2201_76125261的博客 1554

JSP中include指令与include动作标识的区别

JSP中主要包含三大指令,分别是page,include,taglib。本篇主要提及include指令。 JSP中常用的动作标识有<jsp:include>、<jsp:forward>、<jsp:useBean>、<jsp:setProperty>、<jsp:getProperty>、<jsp:fallback>、<...

feizai1208917009的博客 7948

硬核干货|C#+EtherCAT协议:高精度多轴伺服运动控制通信实战

本文摘要: 文章聚焦工业自动化领域多轴伺服运动控制的高精度与实时性需求,基于C#与EtherCAT协议实现完整解决方案。EtherCAT凭借微秒级同步、分布式架构等优势成为首选,而C#通过优化GC策略和实时线程可满足工业控制要求。文章从工程落地角度,详细拆解EtherCAT的PDO/SDO通信机制与多轴同步控制逻辑,提供完整的C#代码实现(主站初始化、伺服配置、运动控制等),所有代码均通过汇川/松下伺服实测验证。核心亮点包括:纯C#原生开发、工业现场高频问题解决方案、硬件适配指南,帮助开发者快速掌握高精度多

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 576

JSP中include指令和include标签的区别

包含指令和包含操作标记都用于将文件包含到当前 JSP 页面中。但是,它们包含文件的方式有所不同。在解释它们之间的区别之前,让我们简要介绍一下它们。 JSP 包含指令 index.jsp <html> <head> <title>JSP include Directive example</title> </head> <body> <%@ include file="display.jsp" %> </bo

allway2的博客 2240

CodeBuddy Code CLI 常用工作流:17个实战场景全解析

CodeBuddy Code CLI 17个实战场景解析 本文详细介绍了CodeBuddy Code CLI在17个开发场景中的高效应用,包括: 快速理解新代码库 高效修复Bug 安全重构代码 使用子代理系统处理专业任务 Plan Mode安全分析 自动化测试处理 创建合并请求 文档生成与维护 图片内容分析 文件目录快速引用 每个场景都配有具体命令示例和最佳实践,帮助开发者提升工作效率。

简简单单Onlinezuozuo 1078

Arcgis中的模型构建器技术之按属性批量建库并对应输出

好久没更新了,之前我们已经介绍过四至点提取模型,前两天有同事问怎么样按属性批量建数据库并对应输出相关图斑。比如将一个县的永农数据按乡镇建立数据库并将对应乡镇的永农数据输出到相应的数据库里。今天就介绍一下相关的模型构建过程。

weixin_44671081的博客 517

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

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

hadasoft的博客 355

详解FreeRTOS:事件标志组(高级篇—5)

事件组可以实现一对多,多对多的同步,即一个任务可以等待多个事件的发生。任务可以通过设置事件位来实现事件的触发和等待操作,FreeRTOS的事件仅用于同步,不提供数据传输功能。

不脱发的程序猿 1073

2020-04-30-----Jsp语法基础

Jsp语法基础 一、JSP(java server pages)介绍 基于java语言的动态网页技术,一般以JSP为后缀 1.JSP是动态网页技术标准,java ee 标准 2·JSP页面在服务器端运行 3·是一个简化的servlet设计 4·实现了在java当中使用HTML标签 二、JSP页面元素构成 指令 <%@page %> page指令,还有include包含指令和tagli...

qq_45021462的博客 234

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

实验说明JSP中include指令和include动作指令的区别

关于include指令和include动作指令的介绍见JSP基本语法(三)首先,我们来看一下include指令所包含的内容与当前页面是一个整体是什么意思。我们在Tomcat安装目录下的webapps文件夹下新建一个文件夹includeTEST,在这里进行一些实验。在includeTEST文件夹下新建一个include.jsp:<%@ page language="java" import="java

王浴昊 2863

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

课堂笔记-JSP基础之include指令和动作

一、include指令 JSPinclude 指令用于通知 JSP 引擎在翻译当前 JSP 页面时,将其他文件中的内容合并进当前 JSP 页面转换成的Servlet源文件中,这种在源文件级别进行引入的方式,称为静态引入,当前 JSP 页面与静态引入的文件紧密结合为一个 Servlet。这些文件可以是 JSP 页面、HTML 页面、文本文件或是一段Java代码。 (1) file...

weixin_43486332的博客 3250

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

JSP动作元素——<jsp:include>、<jsp:include>与include指令的区别、<jsp:forward>

JSP动作元素用来控制JSP的行为,执行一些常用的JSP页面动作。通过动作元素可以实现使用多行Java代码能够实现的效果,如包含页面文件、实现请求转发等。 <jsp:include>动作元素 在JSP页面中,为了把其他资源的输出内容插入到当前JSP页面的输出内容中,JSP技术提供了<jsp:include>动作元素,<jsp:include>动作元素的具体语法格式如下所示。 <jsp:include page="relativeURL" flush="true|fa

醉瑾_的博客 7791

include指令和include动作的区别

include指令指的是jsp的一种指令标记,语法: 而include动作指的是jsp的一种动作标记,语法: 或 param子标记 这两种区别如下: 1.include指令执行时将被导入页面的jsp代码完全融入,两个页面融合成一个Servlet;而include动作则在Servlet中使用include方法来引入被导入页面的内容。因此include指令执行时不需

qq_31957747的博客 1万+

jsp当中,include动作和include指令的区别

jsp这方面学的模模糊糊 今天看视频时 简单了解了 include动作和include指令的区别 (如果实例和图片进行讲解) 如下: !!!! 1.include指令     include可以在JSP页面转换成Servlet之前,将JSP代码插入其中。它的主要优点是功能强大,所包含的代码可以含有总体上影响主页面的JSP构造,比如属性、方法的定义和文档类型的设定。它的缺点是难于维护

Erlong_的博客 911
上一篇: CSS常用技巧
下一篇: 成为一名JAVA程序员高手
freewind
博客等级 码龄16年 136粉丝 108原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值