jsp中的@include与jsp:include区别详解
2020-12-13 05:20
标签:style c class blog code java 搞java开发的人也许都知道在jsp中引入项目中其他文件有如下两种方式 我们也许会使用这两种方式,但是也许很多人不名称这两种方式的区别。下面我们来看看下面的两个例子 (1) /include/include.jsp (2)/ index1.jsp页面 (3) /index2.jsp 现在我们访问index1.jsp,访问结果如下 那我们继续访问index2.jsp,结果如下 为什么呢,怎么index1.jsp为什么访问报错了啊,看来@include与jsp:include是有区别的吧。只有搞懂@include与jsp:include这两种方式的底层区别,我们就知道为什么index1.jsp页面会发生错误了。请继续看下去你就会明白了。 为了演示出@include的正确效果,我们再写两个页面 (1)/include/include1.jsp (2) /index3.jsp 我们访问index3.jsp页面 OK,我们发现结果正确了,可以对比了include1.jsp与include.jsp看看哪里改动了。我们知道当我们访问jsp页面时,servlet容器(如tomcat)会把jsp编译成servlet
java代码。下面我们来看看tomcat对index1.jsp与index3.jsp生成的servlet java代码。在tomcat中我们可以在
“/tomcat目录/work/Catalina/localhost/项目名称/“中找到tomcat将jsp编译成servlet的代码。 (1) index3.jsp对应的servlet代码 (2) index2.jsp页面对应的servlet代码
访问ndex2.jsp时候在也生成了include.jsp对应的servlet代码
从tomcat生成的servlet代码我们可以得出两者之间的区别
@include:页面请求之前预编译,所有代码包含进来之后,一起进行处理,把所有代码合在一起,编译成一个servlet jsp:include
所有代码分别处理,在页面被请求的时候才编译,被编译成多个servlet,页面语法相对独立,处理完成之后再将代码的显示结果(处理结果)组合进来。
为什么本文中刚开始的那个问题index1.jsp页面报错呢,大家知道了吗,原因就是include.jsp页面中和index1.jsp页面中同时都包含如下代码。
因为我们采用的include的方式,这样页面请求之前所有代码先包含进来之后再一起处理,这样代码中就有两个path变量。这样就不符合java语法了。所有就报500错误了。为什么index2.jsp没有错误了,因为采用的jsp:include方式,这样两个页面时单独编译的,最后才将编译的结果合并起来。所有就不会出错。 收工,搞定,完毕! jsp中的@include与jsp:include区别详解,搜素材,soscw.com jsp中的@include与jsp:include区别详解 标签:style c class blog code java 原文地址:http://www.cnblogs.com/javaee6/p/3736000.html1 前言
2 开门见山引出问题
@ page language="java" pageEncoding="UTF-8"%>
String path = request.getContextPath();
%>
h1>include页面h1>
@ page language="java" pageEncoding="UTF-8"%>
String path = request.getContextPath();
%>
DOCTYPE HTML>
html>
head>
head>
body>
h1>index页面h1>
@include file="/include/include.jsp"%>
body>
html>
@ page language="java" pageEncoding="UTF-8"%>
String path = request.getContextPath();
%>
DOCTYPE HTML>
html>
head>
head>
body>
h1>index页面h1>
jsp:include page="/include/include.jsp">jsp:include>
body>
html>
3 @include与jsp:include内部区别
@ page language="java" pageEncoding="UTF-8"%>
h1>include1页面h1>
@ page language="java" pageEncoding="UTF-8"%>
String path = request.getContextPath();
%>
DOCTYPE HTML>
html>
head>
head>
body>
h1>index页面h1>
@include file="/include/include1.jsp" %>
body>
html>
4 结论
5 再次回到问题
String path = request.getContextPath();
%>
下一篇:python mock
文章标题:jsp中的@include与jsp:include区别详解
文章链接:http://soscw.com/essay/30777.html