`
ZhouGang库鲁卡
  • 浏览: 30481 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

(转)JSP的董涛包含和静态包含

 
阅读更多

在网上看到很多说法:

jsp静态包含和动态包含的区别:
  1. 动态INCLUDE 用jsp:include 动作实现。   
  2. <jsp:include page="included.jsp"  
  3. flush="true" />它总是会检查所含文件中的变化,适合用于包含动态页面,并   
  4. 且可以带参数   
  5. 静态INCLUDE 用include 伪码实现,定不会检查所含文件的变化,适用于包   
  6. 含静态页面:<%@ include file="included.htm" %>  

可是经本人验证这种说话是不完全正确的,至少动态<jsp:inlude>指令是可以包含动态页面的。

个人认为区别是:

1<jsp:inlude>在同一个页面中可以包含尽可能多的条数,不管这个页面中有什么内容,只要页面本身合法就行,而<%@ include>伪指令如果被包含页面有定义变量和方法的话只能包含一条。

(这个是和第二条的编译方式相一致的)

2动态包含在请求到来时编译包含页面和被包含页面,如果都是jsp页面,那么将生成俩个页面对应的class文件和java文件。而静态包含只会生成包含页面的java文件和类文件。

 

3所谓动态包含是指在请求包含页面的时候遇到动态包含指令将请求转到被包含页面,这时去编译被包含页面。静态包含是在请求包含页面时去编译包含页面,编译时遇到静态页面包含伪码将被包含页面的内容复制到被包含页面中进行编译。

4<jsp:inlude >指令时相对包含页面的被包含文件路径,但静态包含是相对被包含文件路径的。(这一点孙鑫老师在《java web 深入详解》中讲的很清楚)

5引用被包含页面的范围属性时动态包含的指令是与位置相关的,即在<jsp:include>指令之前引用被包含页面中设置的属性值是无效的。但是静态包含是不区分包含指令的位置的,可以在包含指令之前引用被包含页面设置的属性,是有效的。

俩者是有相同点的:

1 都可以进行交互,request范围对象中的属性包含页和被包含页之间可以交互使用。

2被包含页面中引用包含页面设置的属性时俩者都和设置包含页面中范围属性的值有关,即在包含被包含页面之前设置的范围属性才有效。

代码如下: 包含页面: index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8" buffer="23kb"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <title>this is 'index.jsp' </title>

</head>

<body> 
这是包含页面<br/>

<%--静态包含前引用被包含页面设置的属性 --%>
${name }静态包含前引用被包含页面设置的属性<br/>
<%--包含页面设置属性 --%>
   
   <%request.setAttribute("pws","456") ;%>

   <%--<%@include file="MyJsp.jsp"%>此处因为MyJsp.jsp中定义了变量,固不可以重复包含 --%>
   <%-- --%><%@include file="MyJsp.jsp" %>
   
    ${name }包含静态页面之后引用属性<br/>
   <%--此处没有you.jsp中没有定义变量,所以可以重复包含 --%>
   ${wangzhanming }<br/>
   <%@include file="you.jsp" %>
   <%@include file="you.jsp" %>
   ${wangzhanming }<br/>
  

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

 

<%request.setAttribute("pws","lyx") ;%>
<%--此处可以重复包含--%>
   <jsp:include page="MyJsp.jsp" ></jsp:include>
   <%@include file="you.jsp" %>
   ${name }<br/>
</body>
</html>
设置变量的包含页面: MyJsp.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%--定义变量 --%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <base href="<%=basePath%>">
    
    <title>this is 'MyJsp.jsp' </title>
    
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">    
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->

</head>

<body>
这是定义变量的包含页面<br/>
<%--被包含页面中设置范围属性 --%>
<%request.setAttribute("name","wzm"); %>
    ${name } <br>
    <%--被包含页面中引用包含页面的属性 --%>
    ${pws }<br/>
</body>
</html>

不包含变量设置的被包含页面: you.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<html>
<head>

    
    <title>this is 'you.jsp' </title>
    
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">    
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->

</head>

<body>
    这是不定义变量的被包含页面 <br>
    <%request.setAttribute("wangzhanming","haoren"); %>
    ${wangzhanming }<br/>
    ${pws }<br/>
</body>
</html>

分享到:
评论

相关推荐

    信息系统安全实验报告

    SREng的主要功能包括发现和修复潜在的系统故障,尤其针对计算机病毒造成的破坏。它提供智能扫描功能,即使对于计算机初学者来说,也能生成系统日志,以便寻求专业帮助解决问题。实验涉及的任务和步骤如下: 1. **...

    深度学习驱动的知识追踪研究进展综述

    为了评估这些模型的效果,研究者通常会使用公开的数据集,如Kaggle上的董涛知识追踪数据集,以及各种评价指标,如平均绝对误差(MAE)、均方根误差(RMSE)和准确率。这些数据集和指标有助于比较不同建模方法的性能,并...

    双体系建设推进实施方案.doc

    禹城益佳机械有限公司的双体系建设实施方案详细规划了整个过程,包括目标设定、组织管理、工作步骤和任务。 首先,实施方案明确了实施的目的,即建立健全风险分级管控与隐患排查治理双体系,提高公司的安全生产科学...

    武汉电商5月启动大会,努力和坚持比天赋更重要.docx

    【武汉电商5月启动大会】是一场以"努力和坚持比天赋更重要"为主题的活动,旨在激励员工们在工作中持续付出,坚持不懈,以实现个人和团队的成功。这次大会由宠物线下业务负责人董涛涛主持,通过生动的故事传达了一个...

    激光熔覆制备WC/Co50/Al硬质合金涂层刀具的微观结构及切削性能

    文章发表于《中国激光》杂志,是由昆明理工大学材料科学与工程学院的刘洪喜、董涛、张晓伟、刘子峰、石海等研究人员完成,属于国家自然科学基金技术和技术带头人后备人才资助项目的成果。这说明本项研究得到了国家级...

    双预防两个体系建设,实施方案 (4).docx

    - **领导小组组成**:由公司总经理董涛担任组长,副组长为焦建国,成员包括各部门负责人。 - **职责分工**: - 领导小组负责制定总体策略与指导方针; - 各部门负责人组织具体实施与监督; - 员工参与风险辨识与...

    学校应对自然灾害事故处置预案.docx

    通过以上分析可以看出,《学校应对自然灾害事故处置预案》是一份全面且详细的指导文件,旨在提高学校面对自然灾害的应急处理能力,确保师生生命财产安全,维护校园秩序和社会稳定。该预案不仅明确了各项职责分工,还...

Global site tag (gtag.js) - Google Analytics