JSP中的include的两种用法

WebXR浏览器实战:Quest 2上的三维网页交互革命 WebXR是一种让网页原生支持虚拟现实与增强现实的开放标准,其核心在于重构渲染管线与空间定位能力,而非简单移植传统浏览器。它依托OpenXR硬件抽象层,实现跨设备一致的空间会话、姿态追踪与手势交互,技术价值在于将信息呈现从二维平面升维至人类本能的空间感知维度。典型应用场景包括远程协作三维会议、沉浸式教育建模、Web端3D代码审查及工业AR维修指导。本文聚焦Oculus Quest 2平台,深入解析WebXR Device API在真实VR-capable web browser中的落地实践,涵盖性能调优、安 阅读详情

JSP中的include的两种用法

我们都知道在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的前缀进行解释,如果它不是以斜杠开头,那么就是页面相关的路径就根据引入这个文件的页面所在的路径进行解释.更多有关URL是如何解释的请参考相关资料或书籍.

这只是个人的一些理解.水平有限,请多多指教.并希望能与大家交流,共同进步,希望多提建议.


 QQ:262995777       

 

 

 

 

(一)ANSYS WORKBENCH实践入门 ANSYS-workbench 有限元分析应用基础教程 (张晔)学习笔记 阅读详情

相关推荐

基于JAVA的GB28181实现之SIP服务核心组件解析

本文深入解析了基于JAVA的GB28181标准中SIP服务的核心组件实现,包括协议栈选择、消息处理引擎、事务管理器等关键技术点。通过实战案例分享海康威视、大华设备的特殊处理技巧,并提供性能优化和常见问题排查指南,帮助开发者高效构建稳定的视频监控系统。

weixin_30892037的博客 228

JSPinclude指令的使用方法

JSPinclude指令的使用方法 一 语法 <%@ include file=URL%> 二 代码 1、date.jsp <%@ page language=java import=java.util.* contentType=text/html; charset=utf-8%> <%@ page import=java.text.* %> <% Date d = new Date(); SimpleDateFormat sdf = new SimpleDateFormat(yyyy年MM月dd日); String s = sdf.forma

TCP与UDP通信实例详解及VC6.0实现

TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。它为数据通信提供了错误检测、流量控制、序列化和确认应答服务。TCP在需要确保数据完整性和顺序的应用中广泛使用,如网页浏览、电子邮件和文件传输。相对地,UDP(User Datagram Protocol)是一种无连接的协议,它提供了一种无需建立连接即可发送数据报的方式。

weixin_31688273的博客 999

jspinclude两种用法

1、两种用法 静态include: <%@ inlcude file =”header.jsp” %> 此时引入的是静态的jsp文件,它将引入的jsp中的源代码原封不动地附加到当前文件中,所以在jsp程序中使用这个指令的时候file里面的值(即要导入的文件)不能带多余的标签或是与当前jsp文件重复的东西。例如里面不要包含这样的标签,因为是把源代码原封不动的附加过来,所以会与当前的jsp中的这样的标签重复导致出错。 动态include: <jsp:include page=”header

qq_34955642的博客 4150

jsp页面中include两种使用方法

同一文件夹下的不同JSP文件可用forward标签进行合并 具体如下 既然可以用forward标签进行合并,那么我们现在就将index.jsp分为三部分 首先看下我们的header.jsp文件 <%@ page contentType="text/html;charset=UTF-8" language="java" %> <title>简单登陆页面</ti...

weixin_41852068的博客 9118

jspinclude两种用法

1.两种用法第一种:include指令:通过file属性来指定被包含的页面,当JSP转换成Servlet时引入指定文件,一般不需要写头&lt;%@ pagecontentType="text/html;charset=GB2312" language="java"errorPage=""%&gt;&lt;%@ include file="head.jsp"%&gt;&lt;%@ inclu

余_小凡 的博客 4万+

jsp:include标签中的 flush属性

今天在部署完项目之后,做测试的时候,总是访问相应网页失败,反复思量,查询网页,有一大发现,JSPinclude 另一个文件时有个很偏的属性,叫 flush,默认为 false。 所以在包含页面中,将 时 ,会清理缓存数据。因此, 总结: 在同一个 JSP 中,如果不断 include 自己(源文件),在逻辑上会形成死循环。若默认情况下,服务器会等待该文件被读到底端,然后才输出到客户端,

piaoxuan1987 5385

基于VC 6.0与MFC的邮件客户端开发:SMTP/POP3协议实现与网络编程实战

网络编程是计算机通信的基础,其核心在于通过Socket建立连接,实现不同主机间的数据交换。理解TCP/IP协议栈和Socket编程模型,是掌握网络应用开发的关键。在工程实践中,网络编程的价值体现在构建各种分布式系统、实时通信工具和客户端-服务器应用。以电子邮件系统为例,其底层依赖SMTP和POP3等应用层协议进行邮件传输与管理。本文将深入解析如何基于经典的VC 6.0开发环境和MFC框架,从零实现一个支持邮件收发功能的本地客户端。内容涵盖Winsock库的初始化、SMTP/POP3协议的命令-响应交互逻辑、

weixin_30904593的博客 402

火狐浏览器插件--开发工具

开发工具 1. Web Developer 1.1.8 https://addons.mozilla.org/en-US/firefox/addon/60 以工具栏的形式对网页的(X)HTML、脚本、多媒体、CSS、缓存、图象等多方面的实用工具。使我们能轻易的获得网页的更多信息,使我们进一步的了解当 前所浏览的网页。 说明:超强的web分析工具,开发人员必装。 2. Fireb...

weixin_33939843的博客 165

my12306 火车票购票软件使用方法

开发该软件的目的源于用IE抢票的时候,经常出现IE卡死或者崩溃现象,联想到自己也是搞开发的,于是就用VC开发这么个小软件,原理基本上完全模仿IE购票过程,只是去掉了广告和小图片等资源的下载,相对比IE稳定一点。后来发现用C#开发可能更合适一些。 软件下载地址: 12306火车票订票软件 (windows版本) 软件使用也比较简单,下面来介绍一下: 先看下运行界面:

wind612的博客 1371

Hello JSP!——<jsp:include>动作元素篇

动作元素用来包含静态和动态的文件。如果被包含的文件为静态的文件,那么只是单纯地加到JSP页面中, 不会进行任何处理;如果被包含的文件为动态的文件,那么先进行处理,然后将处理的结果加到JSP页面中。         动作元素的语法格式如下。                 动作元素包含两个属性: page 和 flush。         其中page属性用来指定被包含文件的URL地址。f

想去海邊 2028

JSPinclude两种方法

一、JSPinclude两种方法 1.include指令: 1 <%@includefile="文件的绝对路径或者相对路径"%> file属性是必填的(绝对或相对路径),但它不支持任何的表达式,也不允许通过?挂参方式来传递参数。 2.include动作: 1 2 3 ...

zhang1409399037的博客 5070

jspinclude用法笔记

一般来说,includejsp中有两中用法:一种是引入html静态页面 ,比如一些logo,或者标题等等;另一种是引入jsp页面。 1.两种用法<%@ include file=” ”%> <jsp:include page=” ” flush=”true”/>**2.用法区别 (1)执行时间上区别**<%@ include file=”relativeURI”%>

qq_21223653的博客 969

jsp include使用

【代码】jsp include使用。

机器小番茄 429

6-5-JSP动作元素

一、<jsp:include>动作元素 在JSP页面中,为了把其他资源的输出内容插入到当前JSP页面的输出内容中,JSP技术提供了<jsp:include>动作元素,<jsp:include>动作元素的具体语法格式如下所示: <jsp:include page="被引入资源的相对路径" flush="true|false" /> flush属性用于指定是否将当前页面的输出内容刷新到客户端,默认情况下,flush属性的值为false。 <jsp:

daqi1983的博客 832

JSP——JSP原理、基本语法、三大指令

目录 Java中的动态网页 JSP的原理 JSP的基本语法 JSP三大指令 page指令 Java中的动态网页 一、 Servlet动态网页 = Java代码(主) + html代码(辅): (在Servlet中编写html代码) Servlet擅长的事情: 接受请求参数,封装成对象. 调用业务方法,来处理请求. 控制界面跳转,跳转到某一个JSP负责做界面的输出操作. 二、 JSP...

Guizy 4570

jsp页面中include的使用

使用include指令包含的页面将会直接插入包含该页面中该指令的位置,然后jsp编译器再对合成的文件进行编译,最终编译的页面只有一个。形式&lt;%@ include file="include.jsp" %&gt;使用jsp:include动作包含时,当该动作标识执行后,jsp程序将会将请求forward到被包含页面,并将执行结果放入输出至浏览器中,并返回页面继续执行后面的代码。包含文件和被包含...

一只不知疲倦的学习猿 4859

第13课:JSP动作 Indude动作和指令的区别(JSP教程 JSP入门实战教程 黄菊华Java网站开发系列教程)

Indude动作和指令的区别 要注意,jsp:indude 动作与前面讲解的 include 指令作用类似,现将它们之间的差异总结如下。 属性不同 include 指令通过 file 属性来指定被包含的页面,该属性不支持任何表达式。如果在 file 属性值中应用了 JSP 表达式,会拋出异常。例如下面的代码: <% String fpath="top.jsp"; %> <%@ include file="<%=fpath%>" %> 该用法将会拋出如下异常: File

杭州.黄老师 2830

JSP中的include

JSP中有两个include,一个是指令元素include:&lt;%@include file=”URL”%&gt;,另一个是动作元素:&lt;jsp:include page=”URL” flush=”true”&gt;。   一、JSP指令元素-include:JSP页面开发中,有时候为了减少代码的冗余,可以把在JSP开发中经常需要调用的功能代码封装成一个独立的JSP文件。其他J...

总有一天,你的日积月累,会成为别人的望尘莫及 1462

FBG-SimPlus-comsol_comsol_matlab_FBG

4Longitudinal Strain (Uniform and Non-Uniform)Transverse StressTemperature.

上一篇: js写的日期在IE与mozilla里显示不一致问题,你是怎么看的。
下一篇: native2ascii命令的一种用法!
zhonge2004
博客等级 码龄22年 0粉丝 12原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值