2019独角兽企业重金招聘Python工程师标准>>>

<%@include%>:页面请求之前预编译,所有代码包含进来之后,一起进行处理,把所有代码合在一起,编译成一个servlet

<jsp:include>:所有代码分别处理,在页面被请求的时候才编译,被编译成多个servlet,页面语法相对独立,处理完成之后再将代码的显示结果(处理结果)组合进来。

JSP中的两种包含页面的方法
第一种:include指令:当JSP转换成Servlet时引入指定文件

<%@ pagecontentType="text/html;charset=GB2312" language="java"errorPage=""%>
<%@ include file="head.jsp"%>
<%@ include file="body.jsp"%>
<%@ include file="tail.jsp"%>
第二种:<jsp:include>动作元素:当JSP页面被请求时引入指定文件
<%@ page contentType="text/html; charset=GB2312"language="java" errorPage=""%>
<jsp:include page="head.jsp"/>
<jsp:include page="body.jsp"/>
<jsp:include page="tail.jsp"/>
第二种方法可以很方便的用<jsp:param>来向所包含页传递参数,方法如下:
<%@ page contentType="text/html; charset=GB2312"language="java" errorPage=""%>
<jsp:include page="head.jsp"/>
<jsp:includepage="body.jsp">
<jsp:param name="uid"value="username"/>
<jsp:param name="pwd"value="password"/>
</jsp:include>
<jsp:includepage="tail.jsp"/>

<jsp:include> :动态包含

第一种情况(<jsp:include>包含的是html文件):

DynamicInclude.jsp:

<%@pagecontentType="text/html;charset=gb2312"%><html><head><title>动态包含</title></head><bodystyle="background-color:lightblue"><jsp:include page="header.html"flush="true"/><!--动态包含--><tableborder="1" align="center"><tr><td>姓名</td><td>性别</td><td>年龄</td><td>爱好</td></tr><tr><td>a</td><td>b</td><td>c</td><td>d</td></tr></table></body></html>

 

Header.html :

<h2style="font-family:arial;color:red;font-size:25px;text-align:center">动态包含的标题(HTML)</h2>

 

运行之后,只生成一个servlet,和上面的代码对应如下:

  out.write("\r\n");out.write("<html>\r\n");out.write("\t<head>\r\n");out.write("\t\t<title>动态包含</title>\r\n");out.write("\t</head>\r\n");out.write("\t<bodystyle=\"background-color:lightblue\">\r\n");out.write("\r\n");out.write("\t\t");<span style="color:#ff0000;">org.apache.jasper.runtime.JspRuntimeLibrary.include(request,response, "header.html", out, true);</span>out.write("<!--动态包含-->\r\n");out.write("\r\n");out.write("\t\t<table border=\"1\"align=\"center\">\r\n");out.write("\t\t\t<tr>\r\n");out.write("\t\t\t\t<td>姓名</td><td>性别</td><td>年龄</td><td>爱好</td>\r\n");out.write("\t\t\t</tr>\r\n");out.write("\t\t\t<tr>\r\n");out.write("\t\t\t\t<td>a</td><td>b</td><td>c</td><td>d</td>\r\n");out.write("\t\t\t</tr>\r\n");out.write("\t\t</table>\r\n");out.write("\t</body>\r\n");out.write("</html>");

第二种情况(<jsp:include>包含的是jsp文件):

DynamicInclude.jsp:

<%@pagecontentType="text/html;charset=gb2312"%><html><head><title>动态包含</title></head><bodystyle="background-color:lightblue"><jsp:include page="header.jsp"flush="true"/><!--动态包含--><tableborder="1" align="center"><tr><td>姓名</td><td>性别</td><td>年龄</td><td>爱好</td></tr><tr><td>a</td><td>b</td><td>c</td><td>d</td></tr></table></body></html>

Header.jsp :

<%@pagecontentType="text/html;charset=gb2312"%><html><body><h2style="font-family:arial;color:red;font-size:25px;text-align:center">动态包含的标题(JSP)                   </h2></body></html>

运行之后,生成了两个servlet:DynamicInclude_jsp.java和header_jsp.java,这也是为什么 Header.jsp中要写上<%@page contentType="text/html;charset=gb2312"%>和完整的<html></html>和<body></body>,而Header.html不用写的原因。因为前者两个.jsp文件是两个相互独立的整体,它们之间的关系是通过request和reponse来发生的,而后者只是简单的嵌套。两个servlet对应的代码如下:


DynamicInclude_jsp.java:

     out.write("\r\n");out.write("<html>\r\n");out.write("\t<head>\r\n");out.write("\t\t<title>动态包含</title>\r\n");out.write("\t</head>\r\n");out.write("\t<bodystyle=\"background-color:lightblue\">\r\n");out.write("\r\n");out.write("\t\t");<span style="color:#ff0000;">org.apache.jasper.runtime.JspRuntimeLibrary.include(request,response, "header.jsp", out, true);</span>out.write("<!--动态包含-->\r\n");out.write("\r\n");out.write("\t\t<table border=\"1\"align=\"center\">\r\n");out.write("\t\t\t<tr>\r\n");out.write("\t\t\t\t<td>姓名</td><td>性别</td><td>年龄</td><td>爱好</td>\r\n");out.write("\t\t\t</tr>\r\n");out.write("\t\t\t<tr>\r\n");out.write("\t\t\t\t<td>a</td><td>b</td><td>c</td><td>d</td>\r\n");out.write("\t\t\t</tr>\r\n");out.write("\t\t</table>\r\n");out.write("\t</body>\r\n");out.write("</html>");

header_jsp.java:

     out.write("\r\n");out.write("<html>\r\n");out.write("\t<body>\r\n");out.write("\t\t<h2 style=\"font-family:arial;color:red;font-size:25px;text-align:center\">\r\n");out.write("\t\t\t动态包含的标题(JSP)\r\n");out.write("\t\t</h2>\r\n");out.write("\t</body>\r\n");out.write("</html>");

<%@include%>:静态包含

第一种情况:<%@include%>包含的是jsp文件。

StaticInclude.jsp:

<%@pagecontentType="text/html;charset=gb2312"%><html><head><title>静态包含</title></head><bodystyle="background-color:lightblue"><%@include file="header.jsp"%><!--静态包含--><tableborder="1" align="center"><tr><td>姓名</td><td>性别</td><td>年龄</td><td>爱好</td></tr><tr><td>a</td><td>b</td><td>c</td><td>d</td></tr></table></body></html>

header.jsp:

<%@pagecontentType="text/html;charset=gb2312"%><h2style="font-family:arial;color:red;font-size:25px;text-align:center">静态包含的标题(JSP)</h2>

 

运行之后,只生成一个servlet,和上面的代码对应如下:

 out.write("\r\n");out.write("<html>\r\n");out.write("\t<head>\r\n");out.write("\t\t<title>静态包含</title>\r\n");out.write("\t</head>\r\n");out.write("\t<body style=\"background-color:lightblue\">\r\n");out.write("\r\n");out.write("\t\t");out.write("\r\n");<span style="color:#ff0000;">out.write("<h2style=\"font-family:arial;color:red;font-size:25px;text-align:center\">\r\n");out.write("\t静态包含的标题(JSP)\r\n");out.write("</h2>");</span>out.write("<!--静态包含-->\r\n");out.write("\t\t<table border=\"1\"align=\"center\">\r\n");out.write("\t\t\t<tr>\r\n");out.write("\t\t\t\t<td>姓名</td><td>性别</td><td>年龄</td><td>爱好</td>\r\n");out.write("\t\t\t</tr>\r\n");out.write("\t\t\t<tr>\r\n");out.write("\t\t\t\t<td>a</td><td>b</td><td>c</td><td>d</td>\r\n");out.write("\t\t\t</tr>\r\n");out.write("\t\t</table>\r\n");out.write("\t</body>\r\n");out.write("</html>");

第二种情况:<%@include%>包含的是html文件。

StaticInclude.jsp:

<%@pagecontentType="text/html;charset=gb2312"%><html><head><title>静态包含</title></head><bodystyle="background-color:lightblue"><%@include file="header.html"%><!--静态包含--><tableborder="1" align="center"><tr><td>姓名</td><td>性别</td><td>年龄</td><td>爱好</td></tr><tr><td>a</td><td>b</td><td>c</td><td>d</td></tr></table></body></html>

header.html:

<%@pagecontentType="text/html;charset=gb2312"%><h2style="font-family:arial;color:red;font-size:25px;text-align:center">静态包含的标题(HTML)</h2>

运行之后,也是只生成一个servlet,和上面的代码对应如下:

 out.write("\r\n");out.write("<html>\r\n");out.write("\t<head>\r\n");out.write("\t\t<title>静态包含</title>\r\n");out.write("\t</head>\r\n");out.write("\t<bodystyle=\"background-color:lightblue\">\r\n");out.write("\r\n");out.write("\t\t");out.write("\r\n");<span style="color:#ff0000;">out.write("<h2style=\"font-family:arial;color:red;font-size:25px;text-align:center\">\r\n");out.write("\t静态包含的标题(HTML)\r\n");out.write("</h2>");</span>out.write("<!--静态包含-->\r\n");out.write("\t\t<table border=\"1\"align=\"center\">\r\n");out.write("\t\t\t<tr>\r\n");out.write("\t\t\t\t<td>姓名</td><td>性别</td><td>年龄</td><td>爱好</td>\r\n");out.write("\t\t\t</tr>\r\n");out.write("\t\t\t<tr>\r\n");out.write("\t\t\t\t<td>a</td><td>b</td><td>c</td><td>d</td>\r\n");out.write("\t\t\t</tr>\r\n");out.write("\t\t</table>\r\n");out.write("\t</body>\r\n");out.write("</html>");

由上可以总结出:

对于静态包含,<%@include%>,中包含的文件,只是简单的嵌入到主文件中,就是在jsp页面转化成Servlet时才嵌入到主文件中,因为运行的结果是只生成了一个Servlet。

而对于动态包含<jsp:incude>,如果被包含文件是动态的,那么就会生成两个Servlet,也就是被包含文件也要经过jsp引擎编译执行生成一个Servlet,两个Servlet通过request和reponse进行通信。如果被包含的文件是静态的,那么这种情况和<%@include>就很相似,只生成了一个Servlet,但是他们之间没有进行简单的嵌入,而依然是通过request和reponse进行的通信。

转载于:https://my.oschina.net/xuqiang/blog/392870

%@include%和jsp:include的区别相关推荐

  1. @include与jsp:include的区别

    1.可以使用一个JSP指令或者一个标准行为,在JSP页面中引入其他的页面片段. 2. include指令:在翻译阶段(将JSP页面转换成servlet的阶段),JSP的include指令会读入指定的页 ...

  2. include与jsp:include区别【转载】

    我们都知道在jsp中include有两种形式,分别是 <%@ include file=" "%>  <jsp:include page=" " ...

  3. JSP include 和 jsp:include 的区别以及使用include动作指令传递参数

    在javaweb中有两个include指令 一个是编译指令<% @ include file="fileName"%>,要知道JSP文件最终会被转换成Servlet执行 ...

  4. jsp:include和%@include%的区别

    <%@include%>和<jsp:include>的区别,发现了一些东西的. <%@include%>:页面请求之前预编译,所有代码包含进来之后,一起进行处理,把 ...

  5. jsp中动态include与静态include的区别

    JSP中动态INCLUDE与静态INCLUDE的区别 动态INCLUDE用jsp:include动作实现 <jsp:include page="included.jsp" f ...

  6. Jsp Include指令 与动作区别

    在说include指令和动作之前,我们先来了解下 jsp的生命周期. jsp生命周期 分为5个阶段 解析 servle容器检查页面语法 翻译将jsp编译成servlet源文件 编译 servlet容器 ...

  7. 浅谈JSP中include指令与include动作标识的区别

    JSP中主要包含三大指令,分别是page,include,taglib.本篇主要提及include指令. include指令使用格式:<%@ include file="文件的绝对路径 ...

  8. 5.jsp中动态include与静态include的区别

    动态include在使用的时候,会先解析所要包含的页面(你例子中的included.jsp),解析后在和主页面放到一起显示:静态INCLUDE在使用的时候,不会解析所要包含的页面(你例子中的inclu ...

  9. JSP中include指令和include动作的区别

    include指令是编译阶段的指令,即include所包含的文件的内容是编译的时候插入到JSP文件中,JSP引擎在判断JSP页面未被修改,否则视为已被修改.由于被包含的文件是在编译时才插入的,因此如果 ...

最新文章

  1. vs2015 Preprocessor
  2. 【Python】Github上125k+Star的Python算法资料
  3. 前端开始学java_[Java教程]开启前端学习之路
  4. 军训分批(codevs 2751)
  5. 从实践的角度来回顾一下SQL注入
  6. NumberUtils的 isParsable(String)和isCreatable(String)方法
  7. 用python计算长方体的体积用什么函数_python处理DICOM并计算三维模型体积
  8. python找不到指定文件夹_python找不到指定文件
  9. mysql 锁怎么使用_MySQL锁的用法之行级锁
  10. python自学看什么书-自学Python要看哪些书?有什么推荐?
  11. iwconfig使用
  12. 四级英语高分必备完形填空2篇翻译
  13. WIN10下 搭建golang+vscode开发环境(图文并茂,傻瓜式教程)
  14. 脑电分析工具MNE教程
  15. python微信远程控制摄像头_【python版】利用微信远程控制你的电脑
  16. 多路温度采集控制系统(1)项目介绍
  17. Powershell创建文件
  18. 云计算机特点的是什么意思,云计算是什么?有哪些特点?
  19. 计算机独立安装程序消息证书,巧用证书阻止软件安装
  20. arcgis字段计算器使用rnd函数生成随机数

热门文章

  1. showModalDialog页面
  2. Ubuntu开启允许root用户远程登录
  3. gdc服务器维修公司,gdc服务器阵列架坏了
  4. php 主进程子进程,PHP中的子进程的任何等价物?
  5. Golang——数据类型使用细节详解
  6. 目标检测如何计算召回率_计算机视觉目标检测的框架与过程
  7. cocos2d c 调用java_cocos2d-x之C++ 调用Java函数并接收返回值
  8. java map集合排序的_Java对Map集合进行排序
  9. matlab火焰测温源程序,一种火焰测温方法与流程
  10. integer 负数字符串比较_JAVA源码之Integer-1