2023年11月28日发(作者:)

java面试笔试题:JSP中动态INCLUDE与静态INCLUDE的区别?

[日期:2008-09-15] 来源: 作者:志伟

INCLUDEjsp:include作实 p:include page="includp" flush="true" />

检查含文中的,用于动态,可以参数.

INCLUDEinclude码实,定不检查含文的变,适用包含态页<%@ include file=

"inclum" %>

常详地解了有JSP动态INCLUDE静态INCLUDE的使方法其区

知道jspinclude有两形式,别是

<%@ include file=" "%>

p:include page=" " flush="true"/>

指令素、后者行为.它们在何?何用它们什么?该是多人到它

的问.下面起来看吧.

应用序中有的面的些部(例如题、页航栏)相同时候,们就以考虑用includ

e.体在些时<%@ include file=" "%>,时候p:include page=" " flush="true"/>.形式.

明白是它之间区别.有了它们法的同才解该何时用以如何.

<%@ include file=" "%>,jspinclude元素入指面的.这些容和来的面融

.(这个程是翻译:就是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件叫tesp.入的面叫dp.这个jsp文件存放是一

间的jsp,当前上下根设test

//======dap文件=====//

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

<%

e date=new ();

String date_cn ="";

String dateStr = "";

switch(dattDay())

{

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+dattYear()) + "" + (tMonth()+1) + "" + date()

+ "(星期" + date_cn + ")";

%>

documene("<%=dateStr%>");

//======tesp源文=============//

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

tml>

ead>

itle>include两种itle>

p:include page="dap" flush="true"/>

<%--@ include file="dap" %-->

//在这里用include的两不同式来引入datp个文.

ead>

ody>

able>>d>

jspinclude两种.关注.

d>>able>

ody>

tml>

tesp ,只输了一文本" 有关jspinclude种用.请关.",现在我们

<%@ include file="dp" %>这种式引dp文件.会出什么题了?出现错误

:

HTTP Status 500 ?

opeperException: /datp(0,0) Page directive: can't have multiple occu

rrences of contentType

有一错误,我们要看里就道问的所.码为http 500务器部错.再看面的

.dp中不指定多个contentType.

在这.为在译阶,p的代被原不动加入tesp从而成一

.成后文件就会同的:

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

.的办是把dp文件的这删掉.新后请求tesp

tesp在页显示

20031210 13:12:40

jspinclude两种.关注.

们还能发什么.是去查看tomcat临时件吧.那里看看dp文件内容否已

到了tesp件中.

<.tomcat装在E盘根录下>

E:tomcatworkStandalonelocalhosttest.

目录会看

test_jstest_jsp.class个文.

java文件就是jsp器将jsp转化成了servlet得到test_js这个.

应的test_jsp.class个文就是test_jsservlet文件生的文件.打开产生

servlet文件(test_js).此时们会,tesp 件被化成servlet件时,输出d>间加

不是tesp页面面的,新加的内就是 datp面的: 入了些内或是真的入了

容请己测去看下就一目然了.里不详述.

是我<%@ include file="datp"%>形式到的.

们换p:include page="dap" flush="true"/>是将

<%@ include file="dap"%>换成p:include page="dp" flush="true"/>,然后请求tes

p.

2003? ê 12??10?? 13:30:13

jspinclude两种.关注.

在页上看.我们引入dp输出日期中文现了.原因?因为include为元

请求理阶执行(此处对请处理段进说明.Jsp容器了上提到负责jsp转化serv

let,负责调用jsp实现处理个请并产应答.个阶我们称为求处阶段.求处阶段执行

).

我们include元素入页,只是dp文件转化被编后产se

rvlet文件.如此, dap是作一个独的在执后才tesp运行调用.由于dap

指定符编.所以现了.解决法是dap中重把刚去掉

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

句加后刷重新.页面示正,并跟include令正运行一样.查看tomcat

件会.多出一个 date_js和一date_jsp.class.个文得来方式test_js

test_jsp.class件得的方一样.查看下此test_js文件代码发现.只新加了

:

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

有把dp文件代码入到tesp.

运行引入dap页面行后产生应答.意味我们以指任何够产应答Web

,(一个servlet或一jsp),这些源所生的型和jsp产生内容型相.JSP容器通过

的函调用执行定的.,些被入的源可帮助理原的请,所以些资可以访问请

的所对象.及所原来.

主页被请,页面没有引入主页,你可以对page使用个请时属,

便据运时的况来定要入哪个页.可以加一将被入的面读的请参数.

p:include page="<%=pageSelectedAtRuntime%>" flush="true" >

p:param name="fitstParamer" value="firstValue">

p:param name="lastParamer" value="lastValue">

p:include>

改了引入jsp页面,可以刻使该页的最版本,是因对待引入页面方式

览器接调用的jsp页面方式全相.即容检测面的,并自进入译阶,以得页面最新.

(,include元素jsp它元一样,有行体时"/".就像面这.

p:include page="<%=pageSelectedAtRuntime%>" flush="true" />)

是对include 两种法的

两个面的;

:行时:

<%@ include file="relativeURI"%> 在翻阶段

p:include page="relativeURI" flush="true" /> 请求理阶执行.

:入内的不:

<%@ include file="relativeURI"%>

态文(html,jsp),JSP页面转化servlet和它和到.

p:include page="relativeURI" flush="true" />入执页面servlet成的答文.

两种法中filepage都被释为个相对的URI.它以杠开,么它是一环境

.据赋应用序的URI的前进行,如果不是斜杠,就是面相的路,就根引入

的页所在路径行解.更多有关URL何解的请考相资料书籍.