JSP文件静态引入和动态ip和静态ip的区别引入的区别

jsp 静态引入&%@ include %& 动态引入&jsp:include& 区别 - nevergiveupzeng - 博客园
&servlet容器,先将jsp转化成servlet,然后编译成.class文件,放置容器缓冲区【tomcat的work目录下】。
每次调用jsp时,服务器会读取编译好的servler.class,处理jsp的请求。
2. &%@ include file="page.jsp"%&
& &在servlet容器转化jsp为servlet时,将引入的jsp源码全部添加到当前jsp,一并转化成一个servlet,然后编译。
【可以理解为整合一个servlet,一起编译,一次执行】
3.&jsp:include page="page.jsp"/&
& &发送请求给当前jsp,servlet调用当前jsp servlet编译后文件,到引用位置,调用编译后的page.jsp的servlet。class文件。【可以理解为,各自单独编译,互相调用编译的文件】
以下是对include 两种用法的区别,主要有两个方面的不同:
执行时间上:
<%@ include file=&relativeURI&%> 是在翻译阶段执行
<jsp:include page=&relativeURI& flush=&true& /> 在请求处理阶段执行.
引入内容的不同:
<%@ include file=&relativeURI&%>引入静态文本(html,jsp),在JSP页面被转化成servlet之前和它融和到一起.
<jsp:include page=&relativeURI& flush=&true& />引入执行页面或servlet所生成的应答文本.
另外在两种用法中file和page属性都被解释为一个相对的URI.如果它以斜杠开头,那么它就是一个环境相关的路径.将根据赋给应用程序的URI的前缀进行解释,如果它不是以斜杠开头,那么就是页面相关的路径,就根据引入这个文件的页面所在的路径进行解释。TA的推荐TA的最新馆藏静态Include和动态Include测试并总结 - 推酷
静态Include和动态Include测试并总结
.center-div{
margin-left: 40%;
margin-right: 40%;
.text-div{
margin-top: 80
.hjzgg-div{
font-size:20
font-weight:
letter-spacing:2
-webkit-animation-duration: 3s;
-webkit-animation-fill-mode:
-webkit-animation-name: hjzgg-
.hjzgg-div-delay-1{
-webkit-animation-delay: 1s;
.hjzgg-div-delay-2{
-webkit-animation-delay: 2s;
.hjzgg-div-delay-3{
-webkit-animation-delay: 3s;
.hjzgg-div-delay-4{
-webkit-animation-delay: 4s;
.hjzgg-div-delay-5{
-webkit-animation-delay: 5s;
.hjzgg-div-delay-6{
-webkit-animation-delay: 6s;
@-webkit-keyframes hjzgg-move{
margin-top: -35
margin-top: 10
color:#000000;
text-shadow: 2px 2px 3px #222222;
cssTestOne.jsp
&%@ page language=&java& contentType=&text/ charset=utf-8&
pageEncoding=&utf-8&%&
&!DOCTYPE html PUBLIC &-//W3C//DTD HTML 4.01 Transitional//EN& &http://www.w3.org/TR/html4/loose.dtd&&
&meta http-equiv=&Content-Type& content=&text/ charset=utf-8&&
&title&页面包含&/title&
&link rel=&stylesheet& type=&text/css& href=&css/hjzgg.css& /&
var x = &hjzgg_one&;
&style type=&text/css&&
font-size:40
text-shadow: 2px 2px 3px #222222;
text-align:
String x = &hjzgg_one&;
&div class=&center-div&&
&div class=&hjzgg-div&&CSS&/div&
&div class=&hjzgg-div hjzgg-div-delay-1&&样&/div&
&div class=&hjzgg-div hjzgg-div-delay-2&&式&/div&
&div class=&hjzgg-div hjzgg-div-delay-3&&覆&/div&
&div class=&hjzgg-div hjzgg-div-delay-4&&盖&/div&
&div class=&hjzgg-div hjzgg-div-delay-5&&测&/div&
&div class=&hjzgg-div hjzgg-div-delay-6&&试&/div&
&div class=&text-div&&
&p class=&my-p&&大家好,我是HJZGG&/p&
&%@include file=&cssTestTwo.jsp& %&
&%-- 测试css样式覆盖
&jsp:include page=&cssTestTwo.jsp& flush=&true&/&
&iframe src=&cssTestTwo.jsp& style=&width:100%;&&&/iframe&
alert(&&%=x%&&);
cssTestTwo.jsp
&%@ page language=&java& contentType=&text/ charset=utf-8&
pageEncoding=&utf-8&%&
&!DOCTYPE html PUBLIC &-//W3C//DTD HTML 4.01 Transitional//EN& &http://www.w3.org/TR/html4/loose.dtd&&
&meta http-equiv=&Content-Type& content=&text/ charset=utf-8&&
&title&页面包含&/title&
var x = &hjzgg_two&;
&style type=&text/css&&
font-size:20
text-align:
&%//测试java同名变量
//String x = &hjzgg_one&;
&div class=&text-div&&
&p class=&my-p&&大家好,我是HJZGG&/p&
alert(&&%=request.getParameter(&hjzgg&)%&&);
css覆盖测试:
执行cssTestOne.jsp中的&%@include file=&cssTestTwo.jsp& %& 或者&&jsp:include page=&cssTestTwo.jsp& flush=&true&/&,由于cssTestOne.jsp和cssTestTwo.jsp中都定义了.my-p的样式,被包含进来的页面中定义的样式会覆盖主页面的样式。如果不想造成样式的混乱,最好还是将每个页面的样式区分开来。或者通过执行&iframe src=&cssTestTwo.jsp& style=&width:100%;&&&/iframe&,不会导致页面的样式的覆盖。
js中同名变量问题:
首先在两个文件&head&&/head&之间加入同名js变量x,例如:分别加入&script&var x = &hjzgg_one&;&/script&和&script&var x = &hjzgg_tow&;&/script&, 然后在主页面中进行如下操作:include前调用js的alert(x) 以及 include调用后的alert(x)。
发现是可以允许有同名的js变量的,无论是&jsp:include page=&cssTestTwo.jsp& flush=&true&/&,还是&%@include file=&cssTestTwo.jsp& %&。 如果在include之前访问同名变量,则访问的主页面的变量,否则访问的被包含页面的变量。
java同名变量问题:
首先在两个文件&head&和&body&之间加入同名java变量x,例如:分别加入&% String x = &hjzgg_one&;%&和 &%
String x =
&hjzgg_two&;%&,然后分别调用&jsp:include page=&cssTestTwo.jsp& flush=&true&/&和&%@include file=&cssTestTwo.jsp& %&。然后在include之后执行alert(&&%=x%&&);
发现在加入&%@include file=&cssTestTwo.jsp& %&(静态包含),编译器就已经通知有“变量重名的错误”。而通过&jsp:include page=&cssTestTwo.jsp& flush=&true&/&(动态包含)不仅不会,而且正常运行。
分析一下:&%@include file=&cssTestTwo.jsp& %&引入静态文本,在JSP页面被转化成servlet之前和它融和到一起. 先包含,后编译, 不会检查所含文件的变化,适用于包含静态页面,可以理解为纯粹是把代码写在外面的一种共享方法,所有的变量都是可以和include它的主文件共享, 两者高度紧密结合,不能有变量同名的冲突。而页面设置也可以借用主文件的。 &jsp:include page=&cssTestTwo.jsp& flush=&true&/&引入执行页面或servlet所生成的应答文本.&被包含的文件 先编译,后包含 进来,然后显示。
为了验证上面的分析,首先找到这样的一个目录(即Tomcat jsp生成的java文件位置),先找到你的eclipse workspace,然后会有子目录: .metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost ,在这个目录里会看见你的项目目录,例如我的项目目录名是“cssTest”,然后一路的找下去,最终有一个名称为&jsp&的目录(最终目录:F:\eclipseEE_workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\cssTest\org\apache\jsp),这里就是存放jsp转成servlet(java文件)的地方。
将之前添加的各种变量语句统统去掉, include语句也去掉 , 并将刚才找到的目录的文件删除,接着在浏览器中访问cssTestOne.jsp这个页面。目录里多了两个文件,如下图所示:
再将目录中的文件删除, 并在主页面中加入&%@include file=&cssTestTwo.jsp& %& ,接着在浏览器中访问cssTestOne.jsp这个页面。目录中的内容如下图所示,注意,对应文件的大小发生了变化。
再将目录中的文件删除, 删除&%@include file=&cssTestTwo.jsp& %&,并在主页面中加入&jsp:include page=&cssTestTwo.jsp& flush=&true&/& ,接着在浏览器中访问cssTestOne.jsp这个页面。目录中的内容如下图所示,注意,目录中多了被包含jsp的.class文件和.java文件。
1. 动态include和静态include都和include它的页面的request范围是一致。而&iframe&范围不一致。
2. 动态include和静态include都允许有同名的js变量
3. 动态include中允许有java的同名变量,而静态include中不允许有java的同名变量。
动态INCLUDE
说明:它总是会检查所含文件中的变化,适合用于包含动态页面, 并且可以带参数 ,先编译之后再进行处理。
原因:1、静态include的结果是把其他jsp引入当前jsp,两者合为一体。
2、静态include纯粹是把代码写在外面的一种共享方法,所有的变量都是可以和include它的主文件共享,两者高度紧密结合,不能有变量同名的冲突.而页面设置也可以借用主文件的.
静态INCLUDE
说明:用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面,直接将内容先包含后处理。
原因:1、动态include的结构是两者独立,直到输出时才合并。
2、动态include的jsp文件独立性很强,是一个单独的jsp文件,需要使用的对象,页面设置,都必须有自己创建,当然,
还好它和include它的页面的request范围是一致的
测试项目地址
(最好自己亲手试一下,别怪我误导了你哦!)
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致jsp&Servlet(3)
静态导入代码:&%@ include file=&xxx.jsp&%&
动态导入代码:&jsp:include page=&xxx.jsp& /&
1.静态导入是将被导入页面的代码完全融入,两个页面融合成一个整体Servlet;而动态导入则在Servlet中使用include方法来引入被导入页面的内容。
2.静态导入时被导入页面的编译指令会起作用;而动态导入时被导入页面的编译指令则失去作用,只是插入被导入页面的body内容。
3.动态包含还可以增加额外的参数。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:5306次
排名:千里之外
转载:36篇
(4)(3)(2)(1)(1)(4)(8)(2)(2)(8)(1)(1)(1)(3)(5)

我要回帖

更多关于 jsp 动态转换静态页面 的文章

 

随机推荐