include的两种形式与介绍

本文详细介绍了JSP中静态包含和动态包含的区别,并通过实例演示了它们如何影响请求对象的使用。静态包含在编译阶段将文件合并,而动态包含则在运行时调用被包含的文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

include的另种形式和区别
先简单的说下include的两种形式:
<% include file="" %>:为静态包含(加载)
<jsp:include page="" flush="true" />:为动态包含(加载)

简单来解释一下静态包含和和动态包含:
静态包含:JSP编译器编译的时候已经包含好相应的文件,生成一个java_servlet,对应的Servlet文件中已经包含了被包含的页面,然后javac编译成一个class文件,在jvm运行的的时候,一个页面不能传参(相当于给自己传参),没有意义.

动态包含:JSP编译器编译的时候,加载页面和被夹在页面会被解析成两个java_servlet文件,javac编译器会编译两次,生成两个class文件然后在jvm运行的过程中,这个时候包含文件才去调用被包含的class文件(注意:JSP标签需要自己关闭,不要忘了关闭的斜线)

下面是一个我自己画的分析图:

在给大家一些实例参照一下:

<!DOCTYPE HTML>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>jsp:include</title>
</head>
<body bgcolor="white">
    <font color="red">
    <%@ include file="文件名"%>
    <%= request + "--1--" + "<br>"%>
        <jsp:include page="文件名" flush="true" />
    <%= request + "--1--"+ "<br />"%>
   
    <jsp:include page="文件名?username='123'" flush="true" />

    </font>
</body>
</html>

    上面例子可以看出,因为生成是两个不同的Servlet文件-->不同的class--->所以每个Servlet都有自己的request对象,不是同一个.但是第一个是生成一个Servlet所以是同一个request

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>TestBar.jsp</title>
</head>
<body>
<table width="100%">
    <tr><td><%@ include file="文件名"%></td></tr>
    <%=request.getParameter("username")%>
    <tr><td><% out.println("<p>这是用户显示区</p>");%></td></tr>
</table>
    
</body>
</html>

上面的例子可以看出两个源文件生成后,是同一个页面,然后这个页面中用的是同一个request并且接收的都是同一个request对象.

 

转载于:https://www.cnblogs.com/qq159357/p/4685457.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值