zoukankan      html  css  js  c++  java
  • <%@page include%>、<%@include%>、<jsp:include>三者之间的本质区别

    <%@page include%>、<%@include%>、<jsp:include>三者之间的本质区别

    先从它的几个内置对象说起。

    application和session比较简单,这里主要说明request和page的作用范围。

    application:全局作用范围,整个应用程序共享,就是在部署文件中的同一个webApp共享,生命周期为:应用程序启动到停止。

    session:会话作用域,当用户首次访问时,产生一个新的会话,以后服务器就可以记住这个会话状态。生命周期:会话超时,或者服务器端强制使会话失效。

    request:请求作用域,就是客户端的一次请求。

    page:一个JSP页面。

    以上作用范围使越来越小, request和page的生命周期都是短暂的,他们之间的区别就是:一个request可以包含多个page页(include,forward以及filter)。举个简单的例子:

    jsp1.jsp

    <jsp:useBean id="beanID" class="xxx .xxx.BeanClass" scope="request" />

    <jsp:include page="jsp2.jsp" />

    jsp2.jsp

    <jsp:getProperty name="beanID" property="sample" />

    运行jsp1.jsp可以正常显示数据,因为作用范围是request,相当于调用了request.setAttribute()方法,

    jsp2页通过request.getAttribute来获得这个bean.如果把request改为page,就会抛出NullPointerExceptioin.

    一个请求可以跨好几个JSP(include和forword)和Servlet(如filter).不过这里有一个需要注意的就是区别

    <jsp:include> 和<%@ include %>.如果上面的<jsp:include page="jsp2.jsp" />改为<%@ include file="jsp2.jsp" %>,即使scope为page也是正确的,<%@ include %>是编译时包含,<jsp:include>是运行时包含.前者就相当于宏,编译时替代,后者相当于函数,运行时返回.

    <% @ page %> 只能包含静态内容。
  • 相关阅读:
    ZOJ 1002 Fire Net (火力网)
    UVa OJ 117 The Postal Worker Rings Once (让邮差只走一圈)
    UVa OJ 118 Mutant Flatworld Explorers (变体扁平世界探索器)
    UVa OJ 103 Stacking Boxes (嵌套盒子)
    UVa OJ 110 MetaLoopless Sorts (无循环元排序)
    第一次遇到使用NSNull的场景
    NSURL使用浅析
    从CNTV下载《小小智慧树》
    NSDictionary and NSMutableDictionary
    Category in static library
  • 原文地址:https://www.cnblogs.com/Struts-pring/p/3142225.html
Copyright © 2011-2022 走看看