JSP中动态INCLUDE与静态INCLUDE,forward与sendredirect的区别

来源:互联网 发布:淘宝刷单怎么找客户 编辑:程序博客网 时间:2024/04/27 06:37

  •     动态INCLUDE用jsp:include动作指令 <jsp:include page="included.jsp" flush="true" />它总是会检查所含文件中的变化,在转换为servlet 时不会被编译的,只有执行到该代码时才会被动态的编译载入同时生成多个class和java,和包含页使用不同的request对象,但可以取得包含页的request对象参数,适合用于 包含动态页面,并且可以带参数.
  •     静态INCLUDE用include 编译指令,定不会检查所含文件的变化,适用于包含静态页面<%@ include file="included.htm" %>,jsp引擎会在jsp程序转换时期先把file 属性指定的文件包含进来,然后开始执行转换及编译的工作。(原封不动的把文件代码copy到该位置,然后进行转换和编译,只生成一个java和class),因此包含页面和被包含页面使用同一个request对象。不能传递参数.用的比动态多
 
    <%@ include file=" "%>

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


    前者是指令元素、后者是行为元素.
    通常当应用程序中所有的页面的某些部分(例如标题、页脚和导航栏)都相同的时候,我们就可以考虑用include.具体在哪些时候用<%@ include file=" "%>,哪些时候用<jsp:include page=" " flush="true"/>.这种形式.首先要明白的是它们之间的区别.
    <%@ include file=" "%>,jsp的include指令元素读入指定页面的内容.并把这些内容和原来的页面融合到一起.(这个过程是在翻译阶段:也就是jsp被转化成servlet的阶段进行的.

    由此我们就会知道:jsp页面是把include指令元素所指定的页面的实际内容(也就是代码段)加入到引入它的jsp页面中,合成一个文件后被jsp容器将它转化成servlet.可以看到这时会产生一个临时class文件和一个java文件.

    由于在主页面被请求时,这些页面还没有被引入到主页面中,所以你可以对page属性使用一个请求时属性值,以便根据运行时的情况来决定要引入哪一个页面.还可以添加一些将被引入的页面读取的请求参数.
    <jsp:include page="<%=pageSelectedAtRuntime%>" flush="true" >    <jsp:param name="fitstParamer" value="firstValue">    <jsp:param name="lastParamer" value="lastValue">    </jsp:include>
    如果修改了被引入的jsp页面,那么可以立刻使用该页面的最新版本,这是因为对待被引入的页面的方式与对待由浏览器直接调用的jsp页面的方式完全相同.即容器检测页面的变化,并自动进入翻译阶段,以得到页面的最新版本.
    (注意,include行为元素同jsp其它元素一样,没有行为体时要以"/"结束.就像下面这样.
    <jsp:include page="<%=pageSelectedAtRuntime%>" flush="true" />)
    以下是对include 两种用法的区别
    主要有两个方面的不同;
    一:执行时间上:
    <%@ include file="relativeURI"%> 是在翻译阶段执行
    <jsp:include page="relativeURI" flush="true" /> 在请求处理阶段执行.
    二:引入内容的不同:
    <%@ include file="relativeURI"%> 引入静态文本(html,jsp),在JSP页面被转化成servlet之前和它融和到一起.

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


response.sendRedirect() 执行过语句后后面的内容仍然执行,可以转到服务器以外的地址,可以通过url传递参数?a=value ,客户端又向服务器发送了一次请求

<jsp:forward> 执行过后后面的不再执行,中间可以转发多次,但请求就一次,可以传递参数,可以取得转发页面的参数

 <jsp:forward page=""><jsp:param value="test1" name="name1"/></jsp:forward>


原创粉丝点击