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

静态包含   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如下:     
   
   
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  3. <html>
  4. <head>
  5. <title>静态包含 vs 动态包含的区别</title>
  6. </head>
  7. <body>
  8. <%-- 动态包含 page属性里面的值一定是一个文件的路径,不能用?在路径后面传参,但是能通过jsp:param标签传参--%>
  9. <jsp:include page="/common/head2.jsp">
  10. <jsp:param value="good" name="name"/>
  11. </jsp:include>
  12. <hr/>
  13. <%-- 静态包含,不能用?在路径后面传参,file属性里面的值一定是一个文件的路径,传参会报错。 --%>
  14. <%@include file="/common/head.jsp" %>
  15. </body>
  16. </html>
head.jsp:
   
   
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  3. <html>
  4. <head>
  5. <title>head.jsp</title>
  6. </head>
  7. <body>
  8. 这是一个通用的头部页面head<br/>
  9. </body>
  10. </html>
head2.jsp:
   
   
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <%
  3. String path = request.getContextPath();
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  5. %>
  6. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  7. <html>
  8. <head>
  9. <base href="<%=basePath%>">
  10. <title>My JSP 'index.jsp' starting page</title>
  11. <meta http-equiv="pragma" content="no-cache">
  12. <meta http-equiv="cache-control" content="no-cache">
  13. <meta http-equiv="expires" content="0">
  14. <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  15. <meta http-equiv="description" content="This is my page">
  16. <!--
  17. <link rel="stylesheet" type="text/css" href="styles.css">
  18. -->
  19. </head>
  20. <body>
  21. 这是一个通用的头部页面head<br/>
  22. 动态资源传参,获取到的参数值:<%= request.getParameter("name") %><br/>
  23. </body>
  24. </html>
    效果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值