Include directive and Include action

http://rainmanjin.javaeye.com/blog/476838

 

http://www.orionserver.com/docs/specifications/jsp-1_2-fcs-spec.pdf

 

1 语法不同

<%@ include file = "/login.jsp" %>       --- include directive
<jsp:include flush="true" page="/login.jsp"></jsp:include>         -------- include action

静态include是在main jsp translation 期间执行的,它会将login.jsp的内容引入到main的servlet,两者合而为一。

动态include是在request时候执行的,它独立生成一个相应的servlet。实际只是引用了login.jsp这个文件被转化并被编译后产生的servlet类文件.login.jsp就是作为一个单独的文件在执行后才被index.jsp文件运行时调用.

 

include directive is interpreted relative to current  jsp file.An include directive regards an resource as static object like jsp file.(直接将编译后的login.jsp内容写在main servlet----编译期间完成的)。

include action is interpreted relative to current jsp page.An include action regards an resource as dynamic object as a jsp page.(独立编译一个login对应的servlet,处理请求的时候,执行这个页面) 。

 

编译阶段:Jsp容器负责将jsp页面转化成servlet(称为jsp页面实现类?JSP Page implementation class),并编译这个servlet。这两步就构成了翻译阶段.

请求处理阶段:Jsp容器除了上面提到的负责将jsp页面转化成servlet外,还负责调用jsp页面实现类以处理每个请求并产生应答.这个阶段我们就称为请求处理阶段.请求处理阶段仅执行类文件。

 

2  对象共享

    静态include纯粹是把代码写在外面的一种共享方法,所有的变量都是可以和include它的主文件共享,两者高度紧密结合,不能有变量同名的冲突.而页面设置也可以借用主文件的.不可以重复设置它tag lib.比如:

    而动态include的页面要共享主页面的对象,可以通过<jsp:param> 传递。页面的设置必须单独设置。比如:

<%@ page language=”java” contentType=”text/html;charset=gb2312”%>

 

<jsp:include page=”<%=pageSelectedAtRuntime%>” flush=”true” >
<jsp:param name=”fitstParamer” value=”firstValue”>
<jsp:param name=”lastParamer” value=”lastValue”>
</jsp:include>

3  Request 和 Response

    静态include纯粹是把代码写在主页面的servlet,所以request 和 response 和主页面是同一个对象,可以获得主页面的request 和 reponse 的内容。

    动态include的request 和主页的request是同一个scope,即主页面设置request的attribute/parameter,include页面可以获得.

    main jsp 调用动态include页面实现类,便out.write实现类执行的结果。在动态include页面调用reponse.setHeader,reponse.sendRedirect,setCookies页面没有作用。

    An included page only has access to the JspWriter and it can't set header and reponse.setHeader,reponse.sendRedirect,setCookies.This constraint also apply to include method of RequestDispatcher class.

参考联接:

http://java.chinaitlab.com/ServletJsp/529740_2.html

 

4 实例解析: 定时刷新子页面:动态include和静态include都能做。但静态include会整个页面刷新。

  

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值