jsp静态包含和动态包含

张开发
2026/4/16 11:07:51 15 分钟阅读

分享文章

jsp静态包含和动态包含
一、先用生活例子理解假设你在做一个网页main.jsp里面要放一个页头header.jsp。1. 静态包含相当于你在考试前先把header.jsp的代码复制粘贴到main.jsp里面然后整个大文件一起交给 Tomcat 处理。也就是不是运行 header.jsp 再拿结果过来而是直接把 header.jsp 的源码内容塞进来。2. 动态包含相当于main.jsp先运行自己的部分header.jsp也单独运行一次然后把header.jsp的运行结果插到main.jsp中也就是不是拷源码而是拿运行后的结果来拼接。二、最核心区别静态包含% include fileheader.jsp %特点1. 包含的是“代码内容”就是把header.jsp的内容直接并进当前页面。2. 属于“先合并后处理”先把两个页面拼成一个大 JSP再一起编译执行。讲义原话就是这个意思。3. 更像复制粘贴所以很多时候适合放页头页脚导航栏固定不变的公共 HTML动态包含jsp:include pageheader.jsp /特点1. 包含的是“运行结果”不是把源代码塞进来而是先执行header.jsp再把输出结果插进来。2. 属于“先处理后包含”讲义里明确说了动态页面先执行再把结果包含进来。3. 可以传参数这个很重要jsp:include pageheader.jsp jsp:param nametitle value首页/ /jsp:include然后在header.jsp中可以% request.getParameter(title) %这个是静态包含做不到的重点能力。讲义里专门提到jsp:param。三、我给你画成流程1. 静态包含流程main.jsphtml body % include fileheader.jsp % h1正文/h1 /body /htmlheader.jsph2这是页头/h2Tomcat 实际理解成html body h2这是页头/h2 h1正文/h1 /body /html也就是说先把代码展开再一起执行。2. 动态包含流程main.jsphtml body jsp:include pageheader.jsp / h1正文/h1 /body /htmlheader.jsph2这是页头/h2处理过程是header.jsp先单独执行得到输出h2这是页头/h2再把这个输出插入到main.jsp所以它是先运行再拼结果。四、为什么你会容易混因为这两个最后显示出来表面效果常常一样。比如都可能显示成h2这是页头/h2 h1正文/h1所以你会觉得“这不是一样吗”对显示结果很多时候一样但内部处理机制不一样。老师考试就爱问这个“内部区别”。五、最容易考的区别你直接背这个静态包含% include %包含的是文件内容先合并再处理更像复制粘贴源码适合包含固定页面内容被包含文件哪怕写的是别的后缀本质也是把内容并进来统一处理。讲义里也提到了这一点。动态包含jsp:include /包含的是执行结果先处理再包含被包含页面会单独执行可以用jsp:param传参数更适合动态内容。六、用一个“带参数”的例子你就彻底懂了动态包含例子main.jspjsp:include pageheader.jsp jsp:param nameuname value张三/ /jsp:includeheader.jsph2欢迎你% request.getParameter(uname) %/h2页面会显示欢迎你张三这说明什么说明header.jsp是真的单独跑了一遍而且还接收到了参数。所以它是“动态”的。七、再用一句最土但最好记的话静态包含把别人家的代码抄到自己卷子上一起交卷。动态包含让别人先把题做完把答案拿过来贴到自己卷子上。这个比喻非常准。八、考试怎么答如果老师问“JSP 中静态包含和动态包含的区别是什么”你可以答静态包含% include file %是把被包含文件的内容直接合并到当前 JSP 页面中再统一编译处理属于先合并后处理。动态包含jsp:include page /是先执行被包含页面再把执行结果包含到当前页面中属于先处理后包含并且动态包含可以通过jsp:param传递参数。这就是标准答案。九、最后给你一个对比表对比点静态包含动态包含写法% include file %jsp:include page /包含内容文件源码内容页面执行结果执行顺序先合并后处理先处理后包含像什么复制粘贴单独运行后插结果能否传参数一般不这样用可以用jsp:param适合场景页头、页脚、导航栏等固定内容动态内容、需要传参的内容十、你现在只需要死记这两句静态包含先拼代码再一起运行。动态包含先各自运行再拼结果。

更多文章