JavaWeb 包含指令

【开发该软件的操作系统】:windows10

【软件开发环境/开发工具】:PyCharm

【编程语言】:Python

【开发目的】:这是老师布置的作业啦~ 供初学者参考学习

【开发者】:江西农业大学2020级大二学生


目录

1.包含的目的

2.静态包含(指令包含)的语法 %@include file=""%>

3.静态包含(指令包含)的处理流程

4.静态包含(指令包含)存在的问题。

5.动态包含(标签包含)的语法

6.动态包含(标签包含)的处理流程

7.动态包含(标签包含)如何向被包含页面传递参数

8.动态包含(标签包含)存在的问题

9.比较静态包含和动态包含相同点和不同点。


1.包含的目的

  1. 在一般的页面开发中会有很多内容要重复地显示。
  2. 如果让每一个页面都分别包含工具栏、页面头部、页面尾部的代码。这样会有很多的重复代码,以后维护时会很麻烦。
  3. 如果采用包含的形式,将工具栏、页面头部、页面尾部分别做成一个文件,然后在需要的地方导入就可以减少代码的重复量,方便后期维护。

2.静态包含(指令包含)的语法 %@include file=""%>

静态包含指令是在JSP编译时插入一个包含文本或代码的文件,这个包含的过程是静态的,而包含的文件可以是JSP文件、HTML文件、文本文件,或是一段Java程序(只是简单地将内容合在一起后进行显示)。

在每一个完整的页面中,对于<html>、</html>、<head>、</head>、<title>、</title>、<body>、</body>这几个元素只能出现一次,如果重复出现,则可能会造成显示的错误。

(1)创建info.htm,定义要包含的页面:

(2)创建info.jsp,定义要包含的页面:

(3)创建info.inc,定义要包含的页面:

 (4)创建include_demo01.jsp,使用静态包含指令:

(5)启动tomcat,启动浏览器:

(6)浏览器右击,查看源代码

3.静态包含(指令包含)的处理流程

  1. 首先将所包含的3个文件的内容导入到include_demo01.jsp中
  2. 然后再一起进行编译
  3. 最后再将一份整体的内容展现给用户,也就属于先包含,然后再将全部的代码进行集中的编译处理。 

如图所示

4.静态包含(指令包含)存在的问题。

静态包含 是编译时包含,如果包含的页面不存在则会产生编译错误,而且两个页面的"contentType"属性应保持一致,因为 两个页面会合二为一,只产生一个class文件,因此被包含页面发生的变动再包含它的页面更新前不会得到更新。

5.动态包含(标签包含)的语法<jsp:include page=""/>

使用<jsp:include>指令可以完成动态包含的操作,与之前的静态包含不同,动态包含语句,可以自动区分被包含的页面是静态还是动态。

动态包含语法:

不传递参数: 

<jsp:include page="{要包含的文件路径 | <%=表达式%>}" flush="true | false"/>

传递参数:

<jsp:include page="{要包含的文件路径 | <%=表达式%>}" flush="true | false">

<jsp:param name="参数名称" value="参数内容"/>

... 可以向被包含页面中传递多个参数

</jsp:include>

<jsp:include>这样的语法格式属于标签指令形式,所有的标签指令必须完结,可以使用/>或</jsp:include>的形式,前者是在不传递参数时使用,后者是在传递参数时使用。

所有以<>形式出现的JSP代码都是标签指令。

(1)创建include_demo02.jsp,使用标签指令包含:

(2)重启tomcat,重新加载浏览器: 

(3)标签指令没有完结:

(4)运行:

6.动态包含(标签包含)的处理流程

动态包含在代码的编译阶段,包含和被包含部分是两个独立的部分,只有当运行时,才会动态包含进来,好比方法的调用。(如果包含的是动态页,则先分别处理后再将处理的结果包含进来。)

7.动态包含(标签包含)如何向被包含页面传递参数

(1)定义被包含页,并接收传递的参数:

(2)创建include_demo03.jsp,定义包含页,并传递参数: 

 (3)结果:

 (4)传递参数是一个变量(要传变量就通过表达式完成<%=username%>)

8.动态包含(标签包含)存在的问题

无论是动态包含还是静态包含,其request对象都是相同的。也就是同一个request对象。

9.比较静态包含和动态包含相同点和不同点。

(1)静态包含:

被包含动态页include.jsp:

 静态包含处理页:

 结果:

(2)动态包含:

被包含动态页include.jsp:

动态包含处理页:

结果:

(1)<%@ include file=” ”%>是指令元素,<jsp:include page=” ”/>是行为元素。

(2)最终编译成java文件的数目不同。静态包含在转换成为java文件的时候将包含文件的内容“复制”到主体文件,然后作为一个整体编译。最终编译为一个java文件;动态包含是各个jsp文件分别转换,分别编译。最终编程成多个java文件。

(3)执行时间不同。静态包含发生在:JSP---->java文件阶段。动态包含发生在:执行class文件阶段。动态加入。

(4)静态包含在两个文件中不能有相同的变量,动态包含允许。由于静态包含相当于将包含文件内容直接复制到主体文件中,如果出现相同的变量,就会出现覆盖等问题,导致文件出错。而动态包含相当于调用不同的jsp,变量所在的空间不同,自然不会出现覆盖等现象。

(5)无论是动态包含还是静态包含,其request对象都是相同的。也就是同一个request对象。静态包含最终编译成一个java文件,有一个request对象很好理解。而动态包含最终编译成多个jsp文件,为何会使用一个request对象呢?其实这些jsp组合的过程是一个请求转发的过程,自然也使用同一个request对象了。

静态包含和动态包含的使用

简单总结一下,就一句话:被包含的页面是静态页面就用静态包含,是动态页面就用动态包含。(当然,不是很绝对,但是这样用没有错。)

静态包含:属于先包含后处理

动态包含:如果包含的是动态页,则先分别处理后再将处理的结果包含进来解决重复定义变量的问题。

共同进步,祝大家学有所成!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

米酒馆

鼓励鼓励,鼓励很重要啦~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值