1.两种用法

第一种:include指令:通过file属性来指定被包含的页面,当JSP转换成Servlet时引入指定文件,一般不需要写头
<%@ pagecontentType="text/html;charset=GB2312" language="java"errorPage=""%>
<%@ include file="head.jsp"%>
<%@ include file="body.jsp"%>
<%@ include file="tail.jsp"%>
第二种:第二种:<jsp:include>动作元素:通过page属性来指定被包含的页面,当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:include>动作通常是包含那些经常改动的文件,因为被包含的文件改动不会影响到包含文件,因此不需要对包含文件进行重新编译

2.用法区别

(1)引入内容的不同;执行时间上区别

include指令,(静态包含)被包含的文件被原封不动的插入到包含页面中使用该指令的位置,然后JSP编译器再对这个合成的文件进行编译,最终编译后的文件只有一个。   是在翻译阶段执行

<jsp:include> (动态包含)包含文件时,当该动作标识执行后,JSP程序会将请求转发到(注意不是重定向)被包含页面,并将执行结果输出到浏览器中,然后返回页面继续执行后面的代码,以为web容器执行的两个文件,所以JSP编译器会分别对这两个文件进行编译。   在请求处理阶段执行.

3.如何使include页面携带入参

<jsp:include>动作元素可以很方便的用<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"/>
4. 说明:翻译阶段

翻译阶段:

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

请求处理阶段:

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

5.示例

服务器tomcat    引入页面 test.jsp    被引入页面 date.jsp

//======date.jsp=====//

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

<%

java.util.Date date=new java.util.Date();

String date_cn ="";

String dateStr = "";

switch(date.getDay())

{

case 0:date_cn ="日"; break;

case 1:date_cn ="一"; break;

case 2:date_cn ="二"; break;

case 3:date_cn ="三"; break;

case 4:date_cn ="四"; break;

case 5:date_cn ="五"; break;

case 6:date_cn ="六"; break;

}

dateStr = (1900+date.getYear()) + "年" + (date.getMonth()+1) + "月" + date.getDate() + "日(星期" + date_cn + ")";

%>

document.write("<%=dateStr%>");

//======test.jsp============//

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

<html>

<head>

<title>include的两种用法</title>

<jsp:include page=”date.jsp” flush=”true”/>

<%--@ include file=”date.jsp” %-->

<head>

<body>

<table><tr><td></td></tr></table>

</body>

</html>

先用<%@ include file=”date.jsp” %> 引入date.jsp

500服务器内部错误 –org.apache.jasper.JasperException: /date.jsp(0,0) Page directive: can't have multiple occurrences of contentType

提示:在date.jsp页面中不能指定多个contentType.

是由于在翻译阶段,date.jsp文档的代码被原封不动地参加到了test.jsp页面从而合成一个文档。合成后的文档中就会雷同的:

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

解决的办法是把date.jsp文档中的这句删掉。刷新后再请求test.jsp页面,正常。

查看tomcat下的临时文档,..\tomcat\work\Standalone\localhost\test目录下会看到test_jsp.java和test_jsp.class两个文档,

这里的java文档就是jsp容器将jsp转化成了servlet而得到的test_jsp.java这个文档。

打开所产生的servlet文档(test_jsp.java)。在test.jsp文档被转化成servlet文档时,在输出的<haed>中间新参加的内容就是date.jsp里面的代码.

将<%@ include file=”date.jsp”%>换成<jsp:include page=”dae.jsp” flush=”true”/>

date.jsp 输出的日期中中文出现了乱码.

原因:作include行动元素引入页面时,date.jsp就是作为一个单独的文档在执行后才被test.jsp文档运行时调用.

由于date.jsp文档中无指定字符编码.所以出现了乱码.解决办法是在date.jsp文档中重新把刚才去掉的

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

再查看tomcat下的临时文档,test_jsp.java只增加了一句代码:

JspRuntimeLibrary.include(request, response, "date.jsp", out, true);

它并无把date.jsp文档的代码引入到test.jsp.

jsp中include的两种用法相关推荐

  1. jsp中include 的两种用法

    1.两种用法 静态include: <%@ inlcude file ="header.jsp" %> 此时引入的是静态的jsp文件,它将引入的jsp中的源代码原封不动 ...

  2. jsp中include的两个用法

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

  3. JSP中include的两种方法

      一.JSP中include的两种方法 1.include指令: 1 <%@include file="文件的绝对路径或者相对路径"%> file属性是必填的(绝对或 ...

  4. jsp页面中include的两种使用方法

    jsp页面中include的两种使用方法 include有两种用法 <%@ include file="文件的绝对路径或者相对路径"%> <jsp:include ...

  5. include virtual引入html文件,ASP文件引用include file和include virtual两种用法

    在 ASP 编程中,我们经常遇到需要重复使用的模块代码,通常我们将这些模块代码保存为一个单独的文件,需要使用此模块代码时,在程序中通过 #include 指令引用此文件,这样使得工作效率和程序可读性大 ...

  6. vue3.0中setup使用(两种用法)

    这篇文章主要介绍了vue3.0中setup使用,本文通过两种用法给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 一.setup函数的特性以及作用 可以确定的是 V ...

  7. C++中operator的两种用法

    首先声明,转载自:http://blog.csdn.net/skdkjzz/article/details/45872801 转换函数的名称是类型转换的目标类型,因此,不必再为它指定返回值类型:转换函 ...

  8. java中super_java中super的两种用法

    转自:http://blog.csdn.net/yihuei123/archive/2007/06/04/1637893.aspx 通过用static来定义方法或成员,为我们编程提供了某种便利,从某种 ...

  9. (转载)java中super的两种用法

    (转载)http://www.cnblogs.com/rollenholt/articles/2033989.html 通过用static来定义方法或成员,为我们编程提供了某种便利,从某种程度上可以说 ...

最新文章

  1. tf.keras.layers.MaxPool2D 最大池化层 示例
  2. 别看360完成私有化 仍有三因素阻碍中概股回归
  3. SX1280抗WIFI强干扰电磁环境能力解析
  4. qq五笔linux,QQ五笔 - 五笔小字典 QQ绑定很实用
  5. EMNLP'20最佳论文揭晓!八块肌肉=能打电话?!
  6. 8. 字符串转换整数 (atoi)(正则表达式)
  7. 安卓编译安装python_安卓源码编译环境搭建
  8. c# 火狐浏览器怎么嵌入窗体中_语言C#.net 如何将子窗体嵌入到父窗体里面
  9. js拼接json对象_JS实现合并json对象的方法
  10. proteus 直流可调稳压电源
  11. 计算机桌面调音量的图标不见了,如何解决电脑音量图标不见了
  12. 2018NOIp爆零记
  13. 数据库缓存服务—Redis配置与优化
  14. xp进入win7计算机要密码怎么设置密码,XP系统设置直接跳过密码的多种方法
  15. Sql serever的语句
  16. cad考试题库绘图题答案_CAD考试试题库和参考答案解析
  17. 2020.12.22 ps临摹调色
  18. 类变量、成员变量、局部变量介绍说明
  19. RTX 实时系统 IntervalZero 官方文档
  20. Java面试题及答案2019版(上),springboot缓存技术

热门文章

  1. 【每日最爱一句】2013.06.13
  2. FPGA学习笔记(一)
  3. android 市场 pad,91桌面Android Pad HD版发布 进军安卓平板市场
  4. 电商行业怎样提升客服效率?
  5. 2014年电大计算机应用基础考,2017年电大网考计算机应用基础统考试题
  6. svn注册表编辑器怎么打开_如何在Windows 10上打开注册表编辑器
  7. freenode IRC
  8. R语言-dnorm-pnorm-qnorm-rnorm的区别
  9. 进制的转换(二进制,十进制,八进制,十六进制)
  10. iOS打包项目测试的ipa详细版本以及安装测试ipa流程