JSP中的include动作元素与include指令区别

<jsp:include>动作元素

语法格式如下:<jsp:include page="相对 URL 地址" flush="true" />

flush属性:布尔属性,定义在包含资源前是否刷新缓存区。

flush属性用语指定输出缓存是否转移到被导入文件中。如果指定为true,则包含在被导入文件中,如果指定为false,则包含在原文件中,对于JSP1.1旧版本,只能设置为false。

先建一个testInclude2.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<p>
   今天的日期是: <%= (new java.util.Date()).toLocaleString()%>
</p>
</body>
</html>
再建一个testInclude1.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<p>动态include实例</p>
<jsp:include page="testInclude2.jsp" flush="true"></jsp:include>
</body>
</html>
运行的结果为:每刷新一下网页,日期时间都更新。

--------------------------------------------------------------------------------------------------------------------

执行时间是在请求阶段就会执行,每次加载主页面的时候,被包含的页面都要重新编译。

被导入页面testInclude2.jsp可以只需要要显示的html标签和page指令,作include行动元素引入页面时,实际只是引用了testInclude2.jsp这个文档被转化并被编译后产生的servlet类文档.testInclude2.jsp是作为一个单独的文档在执行后才被testInclude1.jsp文档运行时调用.如果testInclude2.jsp文档中无指定字符编码就会发生乱码。

动态导入是不会导入include页面的编译指令的,而是仅仅将被导入页面的body内容插入本页面。我们去看编译后的文档,会发现动态导入是在Servlet中使用include方法来引入被导入页面的内容。

使用eclipse发布上的项目如果不在tomcat下的临时文件,就在存储空间下的\.metadata\.plugins\org.eclipse.wst.server.core其中的文件夹中,在项目的中会看到下图几个文件

其中testInclude1_jsp中能看到


所以动态导入并不是把代码导进去,而是把页面的应答加进去。

-----------------------------------------------------------------------------------------------

JSP可以通过include指令来包含其他文件。被包含的文件可以是JSP文件、HTML文件或文本文件。包含的文件就好像是该JSP文件的一部分,会被同时编译执行。

语法格式:<%@ include file="文件相对 url 地址" %>

把testInclude1.jsp改成下面:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<p>动态include实例</p>
<%@include file="testInclude2.jsp" %>
</body>
</html>
运行效果和上面一样,不过生成的servlet中内容变了


include指令在转换时插入“testInclude1.jsp”的源代码,<%@include为静态包含,<%@include不论包含的是txt文本还是jsp文件,被包含的页面都不会从新编译。





  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值