理解JSP中的include(一):include-file 指令测试

转载 2004年10月25日 09:51:00
第一个例子:

include-file-test-1.jsp:

<%@ page contentType="text/html;charset=GBK" %>
<%! String dec_str = "dec_str";%>
<%=dec_str%><br>
<%@ include file="include-file-test-2.jsp" %><br>
<%=dec_str%><br>

include-file-test-2.jsp:

<%@ page contentType="text/html;charset=GBK" %>
<%
dec_str = "scr_str"; //Eclipse显示出错。
%>

结果:

dec_str

scr_str

结论:file1中定义的实例变量(或局部变量),file2可以引用并更改。但直接访问file2会出错。



第二个例子:

include-file-test-1.jsp:

<%@ page contentType="text/html;charset=GBK" %>

<% scr_str = "hello " + scr_str;%>

<%@ include file="include-file-test-2.jsp" %>
<%=scr_str%><br>
<% temp = "hello " + temp;%>
<%=temp%>

include-file-test-2.jsp:

<%@ page contentType="text/html;charset=GBK" %>
<%! String scr_str = "scr_str";%>
<% String temp = "temp"; %>

查看file1 对应的servlet:

package org.apache.jsp.jsp_002dsyntax_002dtest;

import ……;

public final class include_002dfile_002dtest_002d1_jsp …… {

String scr_str = "scr_str";
private static java.util.Vector _jspx_dependants;

static {
_jspx_dependants = new java.util.Vector(1);
_jspx_dependants.add("/jsp-syntax-test/include-file-test-2.jsp");
}

public java.util.List getDependants() {
return _jspx_dependants;
}

public void _jspService(HttpServletRequest request, HttpServletResponse response)
throws java.io.IOException, ServletException {

……
try {
……

response.setContentType("text/html;charset=GBK");
……

scr_str = "hello " + scr_str;
String temp = "temp";
……
out.print(scr_str);
temp = "hello " + temp;
……

out.print(temp);
} catch (Throwable t) {
……

} finally {
……
}
}
}

结果:

hello scr_str
hello temp

结论:file2中定义的实例变量,file1可以在<%@ include file="" %>指令之前(或之后)引用并更改。

file2中定义的局部变量,file1必须在<%@ include file="" %>指令之后引用并更改。



第三个例子:

include-file-test-1.jsp:

<%@ page contentType="text/html;charset=GBK" %>
<%!
String str1 = "str1 ";
%>
<%
String str4 = str1 + str2 + str3;
%>
<%@ include file="include-file-test-2.jsp" %>
<%=str4%>

include-file-test-2.jsp:

<%@ page contentType="text/html;charset=GBK" %>
<%!
String str2 = "str2 ";
String str3 = str1 + str2;
%>

file1对应的servlet:

package org.apache.jsp.jsp_002dsyntax_002dtest;

import ……

public final class include_002dfile_002dtest_002d1_jsp ……{


String str1 = "str1 ";


String str2 = "str2 ";
String str3 = str1 + str2;

……

public void _jspService(HttpServletRequest request, HttpServletResponse response)
throws java.io.IOException, ServletException {

……


try {
……
response.setContentType("text/html;charset=GBK");
……

String str4 = str1 + str2 + str3;

……
out.print(str4);
} catch (Throwable t) {
……
}




结果:

str1 str2 str1 str2



结论:file2并不生成servlet,但其中的内容都被包含在了file1生成的servlet之中;file2本身也被添加进名为“ _jspx_dependants”的Vector类型的类变量中。可以看到,在file2中定义的实例变量“scr_str ”被转移到了file1生成的servlet中。可见Tomcat是以一种很耐人寻味的机制进行处理的。

jsp include指令元素

http://www.ibm.com/developerworks/cn/java/j-jsp04293/
  • B_qxzb
  • B_qxzb
  • 2015年12月03日 12:48
  • 394

jsp的3个指令(page指令 Include指令 taglib指令)

jsp的3个指令 JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分。 在JSP 2.0规范中共定义了三个指令: ...
  • daliyuan350649623
  • daliyuan350649623
  • 2016年09月19日 20:31
  • 538

JSP中include指令和include动作浅析

浅析JSP中include指令与include动作
  • u012187452
  • u012187452
  • 2016年06月28日 21:47
  • 1403

JSp中 include指令标记与<jsp:include>动作标记的区别

include指令标记读入指定页面的内容并把这些内容和原来的页面内容融合到一起。这个过程发生在JSP转化成Servlet的阶段,最终所合成的JSP文件被Servlet容器转化成servlet。如果一个...
  • huanyuminhao
  • huanyuminhao
  • 2016年07月27日 15:25
  • 2993

JSP include编译指令和include动作指令区别

1. include编译指令:      jsp中3大指令之一,其他还包括page 编译指令,taglib编译指令(这个用的很少)。include指令可以将一个外部文件嵌入到当前文件中,同时解析这个...
  • dadjun070
  • dadjun070
  • 2017年01月12日 19:29
  • 271

<jsp:include>标签 与include指令的比较

标签是在当前JSP页面的执行期间插入被引入资源的输出内容,当前JSP页面与被动态引入的资源是两个彼此独立的执行实体,被动态引入的资源必须是一个能独立被WEB容器调用和执行的资源。include指令只能...
  • liushijiao258
  • liushijiao258
  • 2012年11月13日 19:45
  • 3126

Include指令和<jsp:include>两种动作表示的区别

Include指令和两种动作表示的区别 1.      include指令通过file属性指定被包含的文件,放在页面的顶部,file属性不支持任何的表达式;是通过page属性来指定被包含的文件的,p...
  • liunian02050328
  • liunian02050328
  • 2014年04月14日 10:49
  • 1382

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

include指令是编译阶段的指令,即include所包含的文件的内容是编译的时候插入到JSP文件中,JSP引擎在判断JSP页面未被修改,否则视为已被修改。由于被包含的文件是在编译时才插入的,因此如果...
  • szwangdf
  • szwangdf
  • 2014年06月22日 17:07
  • 15921

jsp的3个编译指令(page,include,taglib)

JSP的编译指令是通知JSP引擎(Tomcat、WebLogic)的消息,它不直接生成输出。 编译指令都有其默认值,因此无须为每个指令设置其值。  常见的编译指令有3个:   (1)、page:是针对...
  • lwj734114646
  • lwj734114646
  • 2016年04月05日 15:53
  • 418

Eclipse中使用JSP的Include指令的格式问题

关于JSP的Include指令的用法,一般是以下两种情况举个例子:第一种情况 第二种情况    当然了,include指令可以包含动态文件也可以包含静态文件,我们这里不讨论这些.我们会发现includ...
  • island20
  • island20
  • 2007年08月22日 16:14
  • 2619
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:理解JSP中的include(一):include-file 指令测试
举报原因:
原因补充:

(最多只允许输入30个字)