20080823-jsp中include指令与动作的不同


 一、include 指令

  格式:

<%@include file="文件的绝对路径或者相对路径"%>

 
 

file属性:指定被包含的文件,是必添属性。该属性不支持任何表达式,也不允许通过如下方式来传递参数。

<%@include file="welcome.jsp?name=mr"%>

 
 

如果路径以“/”开头,那么指定的是一个绝对路径,将在当前应用的根目录下查找文件,如果是以文件名或文件夹名开头,那么指定的是一个相对路径,将在当前应用的根目录下查找文件。

 

二、include动作

 格式:

<jsp:include page="被包含文件的路径" flush="true/false">
<jsp:param name="参数名称" value="参数值"/>
</jsp:inclue>

 
 

page属性:该属性指定了被包含文件的路径,其值可以是一个代表了相对路径的表达式.当路径以"/"开头时,则按照当前应用的路径查找这个文件,如果路径是以文件名或者目录名称开头,那么将按照当前的路径来查找被包含的文件,

flush属性:表示当输出缓冲区满时,是否清空缓冲区.

 

三、两者的不同

 1、从属性方面进行区分

 include 指令通过file属性来指定被包含的页面,include指令将file属性看作一个实际存在的文件的路径。所以该属性不支持任何表达式,也不支持在struts应用中的请求模式(如*.do),若在file属性值中应用JSP表达式,会抛出异

常,如下面的代码:

 

<% String path="login.jsp"%>
<%@inclue file="<%=path%>"%>

 

 include动作标识通过page属性来指定被包含的页面,该属性支持JSP表达式和Struts 应用在的请求模式

 2、从处理方式方面进行区分

 

  使用include指令,被包含的文件为原封不动的插入到包含页中使用该指令的位置,然后JSP编译器再对这个合成的文件进行编译,所以在一个JSP页面中使用include指令来包含另外一个JSP页面,最终编译后的文件只有一个。

 

  使用include 动作标识包含文件时,当该标识执行时,程序会将请求转发到(注意是转发而不是重定向)被包含的页,并将执行结果输出到浏览器中,然后返回包含页继续执行后面的代码,因为服务器执行的是两个文件。所以JSP编

译器会分别对这两个文件进行编译。

 3、从包含方式方面进行区分

 

  使用include指令包含文件,最终服务器执行的是将两个文件合成后由JSP编译器编译成一个Class 文件,所以被包含的文件的内容是固定不变的,若改变了被包含的文件,则主文件的代码就发生了变化,因此服务器会重新编译主文件

,include指令的这种包含称为静态包含

 

  使用include动作标识通常是包含那些经常需要改动的文件,此时服务器执行的是两个文件,被包含的文件改变不会影响到主文件,因此服务器不会对主文件重新编译,而只需要重新编译被包含的文件即可,而对被包含文件的编译是在执

行时才进行的,也就是说,只有当include动作被执行时,使用该标识包含的目标文件才会被编译,否则被包含的文件不会被编译,所以这种包含过程称为动态包含。

4、从被包含文件的约定方面进行区分

  JSP有一些标识符例如

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

 
 

在一个JSP页面中只能出现一次,这个时间用jsp动作包含一个文件时,包含页与被包含页面只能有一个文件有此标识,而include 标作没有此限制。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值