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

jspinclude的两种⽤法

JSP中的include的两种⽤法

1.两种⽤法

<%@ include file=” ”%>

2.⽤法区别

1)执⾏时间上区别

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

在请求处理阶段执⾏.

2

引⼊内容的不同

<%@ include file=” ”%>

jspinclude指令元素读⼊指定页⾯的内容。并把这些内容和本来的页⾯融合到⼀起。(这个过程是在翻译阶段:也就是jsp被转化成servlet

阶段进⾏的。

引⼊执⾏页⾯或servlet所天⽣的应答⽂本.

3.如何使include页⾯携带⼊参

” flush=”true” >

4. 说明:翻译阶段

翻译阶段:

jsp页⾯不能原封不动地被传送给浏览器,全部的jsp元素都必须⾸先由服务器进⾏处理。这是通过将jsp页⾯转达化成servlet,然后执⾏这个

servlet来结束的。服务器需要⼀个jsp容器来处理jsp页⾯。jsp容器平常以servlet的情势来实现,这个servlet经过配置,可以处理对jsp页⾯的

全部请求。

Jsp容器重视将jsp页⾯转化成servlet(称为jsp页⾯实现类—JSP Page implementation class,并编译这个servlet。这两步就组成了翻译阶

.

请求处理阶段:

Jsp容器除了上⾯提到的重视将jsp页⾯转化成servlet,还重视调⽤jsp页⾯实现类以处理每个请求并产⽣应答.这个阶段我们就称为请求处理阶段.请求处理阶段仅

执⾏类⽂档.

5.⽰例

服务器⽤tomcat,引⼊页⾯的jsp⽂档叫。被引⼊的页⾯叫.这个jsp⽂档⾥存放的是⼀个有关时间的jsp代码,当前的上下⽂根设为test

//======的源⽂档=====//

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

<%

date=new ();

String date_cn ="";

String dateStr = "";

switch(())

{

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+r()) + "" + (th()+1) + "" + e() + "(星期" + date_cn + ")";

%>

("<%=dateStr%>");

//======以下是的源⽂档=============//

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

include</span><span style='font-size:13.169px;color:#000000;letter-spacing:0.013px;font-family:HiraginoSansGB-W3;'>的两种⽤法</span><span style='font-size:13.169px;color:#000000;letter-spacing:-0.045px;font-family:NimbusSanL-Regu;'>

<%--@ include file=”” %-->

这句代码。解决的办法是把⽂档中的这句删掉。刷新后再请求页⾯,正常。

查看tomcat下的临时⽂档,..tomcatworkStandalonelocalhosttest⽬录下会看到test_test_两个⽂档,

这⾥的java⽂档就是jsp容器将jsp转化成了servlet⽽得到的test_这个⽂档。

相对应的test_这个⽂档就是编译test_这个servlet⽂档产⽣的类⽂档了。打开所产⽣的servlet⽂档(test_)。此时我

们会发觉,在⽂档被转化成servlet⽂档时,在输出的中间参加了⼀些不是页⾯⾥⾯的代码,新参加的内容就是

⾥⾯的代码.

<%@ include file=””%>换成,然后请求.此时会在页⾯上看见.我们所引⼊

输出的⽇期中中⽂出现了乱码.

所以在我们作include⾏动元素引⼊页⾯时,实际只是引⽤了这个⽂档被转化并被编译后产⽣的servlet类⽂档.既如此,就是作为⼀个单独的⽂档在

执⾏后才被⽂档运⾏时调⽤.由于⽂档中⽆指定字符编码.所以出现了乱码.解决办法是在⽂档中重新把刚才去掉的

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

再查看tomcat下的临时⽂档会发觉.此时多出了⼀个date_⽂档和⼀个date_⽂档.这两个⽂档得来的⽅法跟test_

test_⽂档得来的⽅法⼀样.再查看⼀下此时test_⽂档的代码会发觉.此时只增加加了⼀句代码:

e(request, response, "", out, true);

它并⽆把⽂档的代码引⼊到.