您的位置:首页 > Web前端 > JavaScript

<jsp:include>和<%@include file=""%>的区别

2015-01-19 18:46 681 查看
简单点说吧:

<jsp:include page="">

父页面和包含进来的页面单独编译,单独翻译成servlet后,在前台拼成一个HTML页面。

<%@include file=""%>

父页面和包含进来的页面,代码合并后,才一起翻译成servlet,反馈到前台,形成一个HTML页面。

<%@ include file="date.jsp" %>

<jsp:include page="date.jsp" flush="true"/>

include编译指令是在JSP程序的转换时期就将file属性所指定的程序内容嵌入,然后再编译执行;

而include指令在转换时期是不会被编译的,只有在客户端请求时期如果被执行到才会被动态的编译载入

只生成一个class文件

多个

Include不能带参数

<jsp:include>可以

同一个request对象

不同的request对象,可以取得包含它的页面的参数,并添加了自己的参数

<jsp:include />动态包含,不和当前页面进行整合,相当于调用了一个方法,包含界面和被包含界面会生成两个不同的class
<%@page include="" %>静态包含, 把被包含页面和当前页面进行整合到一起之后,再翻译成servlet

 include指令是编译阶段的指令,即include所包含的文件的内容是编译的时候插入到JSP文件中,JSP引擎在判断JSP页面未被修改,否则视为已被修改。由于被包含的文件是在编译时才插入的,因此如果只修改了include文件内容,而没有对JSP修改,得到的结构将不会改变,所以直接执行已经存在的字节码文件,而没有重新编译。因此对不经常变化的内容,用include指令是合适的,如果需要的内容是经常变化的,则需要动作元素<jsp:include>.下面将详细区分他们之间的不同

1.include指令

include可以在JSP页面转换成Servlet之前,将JSP代码插入其中。它的主要优点是功能强大,所包含的代码可以含有总体上影响主页面的JSP构造,比如属性、方法的定义和文档类型的设定。它的缺点是难于维护只要被包含的页面发生更改,就得更改主页面,这是因为主页面不会自动地查看被包含的页面是否发生更改。

语法:<%@ include file="sample.jsp" %>

2.include动作

jsp:include动作是在主页面被请求时,将次级页面的输出包含进来。尽管被包含的页面的输出中不能含有JSP,但这些页面可以是其他资源所产生的 结果。服务器按照正常的方式对指向被包含资源的URL进行解释,因而这个URL可以是Servlet或JSP页面。服务器以通常的方式运行被包含的页面, 将产生的输出放到主页面中,这种方式与RequestDispatcher类的include方法一致。它的优点是在被包含的页面发生更改时,无须对主页 面做出修改。它的缺点是所包含的是次级页面的输出,而非次级页面的实际代码,所以在被包含的页面中不能使用任何有可能在整体上影响主页面的JSP构造。

语法: <jsp:include page="sample.jsp" flush="true"> <jsp:param name="name" value="value"/> </jsp:include>

其中参数设置可以没有,如果没有参数设置,则必须采用<jsp:include page="sample.jsp" flush="true"/>形式

主要有两个方面的不同;

一:执行时间上:

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

<jsp:include page=”relativeURI” flush=”true” /> 在请求处理阶段执行.

二:引入内容的不同:

<%@ include file=”relativeURI”%>

引入静态文本(html,jsp),在JSP页面被转化成servlet之前和它融和到一起.

<jsp:include page=”relativeURI” flush=”true” />引入执行页面或servlet所生成的应答文本.

三: 使用include动作还是include指令?

  使用include指令,如果被包含的文件发生改变,那么,用到它的所有Jsp页面都需要更新。

  仅当include动作不能满足要求时,我们才应该使用include指令。

  有 些开发人员认为include指令生成的代码执行起来比使用include动作的代码更快。尽管原则上由可能的确如此,但性能上的差异很小,以致难以测 量,同时,include动作在维护上的优势十分巨大,当两种方法都可以使用时,include动作几乎肯定是首选的方法。

  对于文件包含,应该尽可能地使用include动作。仅在所包含的文件中定义了主页面要用到的字段或方法,或所包含的文件设置了主页面的响应报头时,才应该使用include指令。

既然include指令产生难以维护的代码,为什么人们还要使用它呢?

  因为include指令更为强大。include指令允许所包含的文件中含有影响主页面的Jsp代码,比如响应报头的设置和字段、方法的定义。

例子://subpage.jsp

<%! int num=0; %>

//mainpage.jsp

<html>

<body>

<%@ include file="subpage.jsp" %>

<%= num %>

</body>

</html>

当然使用include动作时这是不可能的,因为num变量未定义,主页面不能成功的转换成servlet。

jsp include页面出现问题的解决方法:

1.当jsp include动态文件时(jsp文件)可以在被include的jsp文件头部加上代码:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

2.当jsp include静态文件时(html文件)可以在被include的html文件的<head></head>标签内加上代码:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

转自:
http://www.baidu.com/s?wd=%3Cjsp%20include%3E%20%E5%92%8C%3C%25%40include%20%25%3E&rsv_spt=1&issp=1&f=8&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_sug3=74&rsv_sug4=1713&rsv_sug1=44&rsv_pq=ecb024ea00012342&rsv_t=da20pHB%2Fn1M2Jvha0FzksPK4BiFMc0LaRaMxlziXkcjrtwDE4FiNOFW9lOsTADJVY%2FLX&rsv_sug2=0&inputT=33003 http://dusiguxia.blog.163.com/blog/static/55629316201132323249297/ http://blog.csdn.net/szwangdf/article/details/33336777
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐