静态包含和动态包含的区别

时间:2022-12-14 19:01:09


静态包含   vs   动态包含 的区别?


1) 语法不同


静态包含语法: <%@inclue file="被包含的页面"%>


动态包含语法: <jsp:include page="被包含的页面">



2)参数传递不同


静态包含 不能向被包含页面传递参数


动态包含 可以使用jsp:param标签向被包含页面传递参数



3)原理不同


静态包含: 先合并再翻译


动态包含: 先翻译再合并



        如下Demo代码案例 注意: include指令静态包含,是直接把 被包含的页面(head.jsp)的内容翻译到包含页面(action.jsp)中,合并翻译成一个java源文件,再编译运行,即 先合并再翻译 。但是,2个jsp页面中都有path和basePath两个变量了,jsp被翻译成jsp源文件后,属于变量重复定义。删除被包含页面中重复的jsp脚本问题即可解决。也可以运用jsp标签jsp:include动态包含来解决, 动态包含是先翻译再合并,即使存在重复变量定义,也不影响 。


Demo如下:


     action.jsp如下:     


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

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

 <head>

   <title>静态包含  vs  动态包含的区别</title>

 </head>

 

 <body>

   

<%-- 动态包含 ,page属性里面的值一定是一个文件的路径,不能用?在路径后面传参,但是能通过jsp:param标签传参--%>

<jsp:include page="/common/head2.jsp">

 <jsp:param value="good" name="name"/>

</jsp:include>

   

    <hr/>

   

    <%-- 静态包含,不能用?在路径后面传参,file属性里面的值一定是一个文件的路径,传参会报错。 --%>

<%@include file="/common/head.jsp" %>

 </body>

</html>

head.jsp:

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

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

 <head>

   <title>head.jsp</title>

 </head>

 

 <body>

   这是一个通用的头部页面head<br/>

 </body>

</html>

head2.jsp:

</html>


    效果:




静态包含和动态包含的区别