jsp中include的两种用法
JSP中的include的两种用法
1.两种用法
<%@ include file=” ”%>
<jsp:include page=” ” flush=”true”/>
2.用法区别
(1)执行时间上区别
<%@ include file=”relativeURI”%> 是在翻译阶段执行
<jsp:include page=”relativeURI” flush=”true” /> 在请求处理阶段执行.
(2)引入内容的不同
<%@ include file=” ”%>
jsp的include指令元素读入指定页面的内容。并把这些内容和本来的页面融合到一起。(这个过程是在翻译阶段:也就是jsp被转化成servlet的阶段进行的。
<jsp:include page=”relativeURI” flush=”true” />引入执行页面或servlet所天生的应答文本.
3.如何使include页面携带入参
<jsp:include page=”<%=pageSelectedAtRuntime%>” flush=”true” >
<jsp:param name=”fitstParamer” value=”firstValue”>
<jsp:param name=”lastParamer” value=”lastValue”>
</jsp:include>
4. 说明:翻译阶段
翻译阶段:
jsp页面不能原封不动地被传送给浏览器,全部的jsp元素都必须首先由服务器进行处理。这是通过将jsp页面转达化成servlet,然后执行这个servlet来结束的。服务器需要一个jsp容器来处理jsp页面。jsp容器平常以servlet的情势来实现,这个servlet经过配置,可以处理对jsp页面的全部请求。
Jsp容器重视将jsp页面转化成servlet(称为jsp页面实现类—JSP Page implementation class),并编译这个servlet。这两步就组成了翻译阶段.
请求处理阶段:
Jsp容器除了上面提到的重视将jsp页面转化成servlet外,还重视调用jsp页面实现类以处理每个请求并产生应答.这个阶段我们就称为请求处理阶段.请求处理阶段仅执行类文档.
5.示例
服务器用tomcat,引入页面的jsp文档叫test.jsp。被引入的页面叫date.jsp.这个jsp文档里存放的是一个有关时间的jsp代码,当前的上下文根设为test
//======date.jsp的源文档=====//
<%@ page language=”java” contentType="text/html;charset=gb2312"%>
<%
java.util.Date date=new java.util.Date();
String date_cn ="";
String dateStr = "";
switch(date.getDay())
{
case 0:date_cn ="日"; break;
case 1:date_cn ="一"; break;
case 2:date_cn ="二"; break;
case 3:date_cn ="三"; break;
case 4:date_cn ="四"; break;
case 5:date_cn ="五"; break;
case 6:date_cn ="六"; break;
}
dateStr = (1900+date.getYear()) + "年" + (date.getMonth()+1) + "月" + date.getDate() + "日(星期" + date_cn + ")";
%>
document.write("<%=dateStr%>");
//======以下是test.jsp的源文档=============//
<%@ page language=”java” contentType=”text/html;charset=gb2312”%>
<html>
<head>
<title>include的两种用法</title>
<jsp:include page=”date.jsp” flush=”true”/>
<%--@ include file=”date.jsp” %-->
<head>
<body>
<table><tr><td></td></tr></table>
</body>
</html>
先用<%@ include file=”date.jsp” %>这种情势引入date.jsp这个文档。此时出现了错误提示:
HTTP Status 500 –
org.apache.jasper.JasperException: /date.jsp(0,0) Page directive: can't have multiple occurrences of contentType
状况码为http 500服务器内部错误。再看下面的提示。在date.jsp页面中不能指定多个contentType.
原因就在这里了。是由于在翻译阶段,date.jsp文档的代码被原封不动地参加到了test.jsp页面从而合成一个文档。合成后的文档中就会雷同的:
<%@ page language=”java” contentType=”text/html;charset=gb2312”%>
这句代码。解决的办法是把date.jsp文档中的这句删掉。刷新后再请求test.jsp页面,正常。
查看tomcat下的临时文档,..\tomcat\work\Standalone\localhost\test目录下会看到test_jsp.java和test_jsp.class两个文档,
这里的java文档就是jsp容器将jsp转化成了servlet而得到的test_jsp.java这个文档。
相对应的test_jsp.class这个文档就是编译test_jsp.java这个servlet文档产生的类文档了。打开所产生的servlet文档(test_jsp.java)。此时我们会发觉,在test.jsp文档被转化成servlet文档时,在输出的<haed>中间参加了一些不是test.jsp页面里面的代码,新参加的内容就是date.jsp里面的代码.
将<%@ include file=”date.jsp”%>换成<jsp:include page=”dae.jsp” flush=”true”/>,然后请求test.jsp.此时会在页面上看见.我们所引入date.jsp输出的日期中中文出现了乱码.
所以在我们作include行动元素引入页面时,实际只是引用了date.jsp这个文档被转化并被编译后产生的servlet类文档.既如此,date.jsp就是作为一个单独的文档在执行后才被test.jsp文档运行时调用.由于date.jsp文档中无指定字符编码.所以出现了乱码.解决办法是在date.jsp文档中重新把刚才去掉的
<%@ page language=”java” contentType=”text/html;charset=gb2312”%>
再查看tomcat下的临时文档会发觉.此时多出了一个date_jsp.java文档和一个date_jsp.class文档.这两个文档得来的方法跟test_jsp.java和test_jsp.class文档得来的方法一样.再查看一下此时test_jsp.java文档的代码会发觉.此时只增加加了一句代码:
JspRuntimeLibrary.include(request, response, "date.jsp", out, true);
它并无把date.jsp文档的代码引入到test.jsp.
jsp中include的两种用法的更多相关文章
- JSP中的include的两种用法
1.两种用法 <%@ include file=” ”%> <jsp:include page=” ” flush=”true”/> 2.用法区别 (1)执行时间上区别 < ...
- java中super的两种用法
通过用static来定义方法或成员,为我们编程提供了某种便利,从某种程度上可以说它类似于C语言中的全局函数和全局变量.但是,并不是说有了这种便利,你便可以随处使用,如果那样的话,你便需要认真考虑一下自 ...
- Jquery中toggleClass的两种用法
css样式: <style type="text/css"> .bgc{ background-color:#F00; color: #FFF} </style& ...
- Javascript 中 call 的两种用法
用法一(常见用法): 表现形式为:一个对象.方法.call(另一个对象),意义是用另一个对象代替当前对象,执行当前对象的方法.先看示例: function Class1(){ this.name = ...
- jsp中一个标签两种方式绑定两个click事件导致未执行的问题
近日,在开发过程中,写了一个标签 <li id="a1" onclick="doSomething()">...</li> 在js页面中 ...
- js高级编程中命名空间的两种用法
第一种:// 声明一个全局对象Namespace,用来注册命名空间Namespace = new Object();// 全局对象仅仅存在register函数,参数为名称空间全路径,如"Gr ...
- <%@ include file=""%>与<jsp:include page=""/>两种方式的作用
一.前言 身为一名coder有太多太多的知识点要去学,太多太多的东西要去记.往往一些小细节也就难免疏忽,但悲催的是多数困恼你的bug就是因为这些微不足道的知识点.我们又不是机器人,怎么可能什么都记得了 ...
- 2019/7/18 --1.<%@ include file=""%>与<jsp:include page=""/>两种方式的作用
一.前言 身为一名coder有太多太多的知识点要去学,太多太多的东西要去记.往往一些小细节也就难免疏忽,但悲催的是多数困恼你的bug就是因为这些微不足道的知识点.我们又不是机器人,怎么可能什么都记得了 ...
- jsp:jsp包含文件的两种方式
第一种:include指令 include指令:当JSP转换成Servlet时引入指定文件(指令元素),这是一种静态包含,它运行的时候不会单独编译成.class文件,它生成一个新的整体.class文件 ...
随机推荐
- 纪录片- 睡眠追踪(Chasing sleep) (共6集)
传送门:https://www.bilibili.com/bangumi/play/ep120260/ 小贴士传送门:https://www.bilibili.com/video/av11887055 ...
- CSS - 背景半透明
就一句话 background: rgba(0, 0, 0, .2); body { background-color: pink; } div { width: 200px; height: 200 ...
- HA: Infinity Stones-Write-up
下载地址:点我 哔哩哔哩:点我 主题还是关于复仇者联盟的,这次是无限宝石的. 信息收集 虚拟机的IP为:192.168.116.137 ➜ ~ nmap -sn 192.168.116.1/24 St ...
- Struts2报错异常Method "setUser" failed for object com.mikey.action.ConverterAction@dd34285
在写类型转换的时候发现报错 异常信息 ognl.MethodFailedException: Method "setUser" failed for object com.mike ...
- JSP数据交互二
1.JSP内置对象:JSP内置对象是 Web 容器创建的一组对象,不用通过手动new就可以使用2.JSP9大内置对象: 对象名称 类型 request (请求对象) javax.servl ...
- C#往TextBox的方法AppendText加入的内容里插入换行符----转载
C# TextBox换行[huan hang]时你往往会想到直接付给一个含有换行[huan hang]符"\n"的字符[zi fu]串[zi fu chuan]给Text属性[sh ...
- CXL联盟正式成立:成员均是行业巨头
导读 今天,阿里巴巴.思科.戴尔EMC.Facebook.Google.HPE.华为.Intel.微软(按英文首字母排序)联合宣布,CXL联盟(Compute Express Link Consort ...
- Linux oracle 服务器清理缓存
清理服务器缓存 echo 1 >/proc/sys/vm/drop_cachesecho 2 >/proc/sys/vm/drop_cachesecho 3 >/proc/sys/v ...
- require - 引入文件
导入 /** * Creates the node for the load command. Only used in browser envs. */ req.createNode = funct ...
- CMake查找第三方库路径
问题 一直都有一个问题,就是基于Windows下使用CMake构建VS工程时,CMake是如何查找到第三方库所在的路径的呢? 答案 今天重新想起这个问题,就拿构建Vtk的VS工程测试了一下, 才发现是 ...