jsp中include的两种用法
1.两种用法
第一种:include指令:通过file属性来指定被包含的页面,当JSP转换成Servlet时引入指定文件,一般不需要写头
<%@ pagecontentType="text/html;charset=GB2312" language="java"errorPage=""%>
<%@ include file="head.jsp"%>
<%@ include file="body.jsp"%>
<%@ include file="tail.jsp"%>
第二种:第二种:<jsp:include>动作元素:通过page属性来指定被包含的页面,当JSP页面被请求时引入指定文件,需要写头
<%@ page contentType="text/html; charset=GB2312"language="java" errorPage=""%>
<jsp:include page="head.jsp"/>
<jsp:include page="body.jsp"/>
<jsp:include page="tail.jsp"/>
注意:<jsp:include>动作通常是包含那些经常改动的文件,因为被包含的文件改动不会影响到包含文件,因此不需要对包含文件进行重新编译
2.用法区别
(1)引入内容的不同;执行时间上区别
include指令,(静态包含)被包含的文件被原封不动的插入到包含页面中使用该指令的位置,然后JSP编译器再对这个合成的文件进行编译,最终编译后的文件只有一个。 是在翻译阶段执行
<jsp:include> (动态包含)包含文件时,当该动作标识执行后,JSP程序会将请求转发到(注意不是重定向)被包含页面,并将执行结果输出到浏览器中,然后返回页面继续执行后面的代码,以为web容器执行的两个文件,所以JSP编译器会分别对这两个文件进行编译。 在请求处理阶段执行.
3.如何使include页面携带入参
<jsp:include>动作元素可以很方便的用<jsp:param>来向所包含页传递参数,方法如下:
<%@ page contentType="text/html; charset=GB2312"language="java" errorPage=""%>
<jsp:include page="head.jsp"/>
<jsp:includepage="body.jsp">
<jsp:param name="uid"value="username"/>
<jsp:param name="pwd"value="password"/>
</jsp:include>
<jsp:includepage="tail.jsp"/>
4. 说明:翻译阶段
翻译阶段:
Jsp容器将jsp页面转化成servlet(称为jsp页面实现类—JSP Page implementation class),并编译这个servlet。这两步就组成了翻译阶段.
请求处理阶段:
Jsp容器除将jsp页面转化成servlet外,还调用jsp页面实现类以处理每个请求并产生应答.这个阶段我们就称为请求处理阶段.请求处理阶段仅执行类文档.
5.示例
服务器tomcat 引入页面 test.jsp 被引入页面 date.jsp
//======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
500服务器内部错误 –org.apache.jasper.JasperException: /date.jsp(0,0) Page directive: can't have multiple occurrences of contentType
提示:在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这个文档。
打开所产生的servlet文档(test_jsp.java)。在test.jsp文档被转化成servlet文档时,在输出的<haed>中间新参加的内容就是date.jsp里面的代码.
将<%@ include file=”date.jsp”%>换成<jsp:include page=”dae.jsp” flush=”true”/>
date.jsp 输出的日期中中文出现了乱码.
原因:作include行动元素引入页面时,date.jsp就是作为一个单独的文档在执行后才被test.jsp文档运行时调用.
由于date.jsp文档中无指定字符编码.所以出现了乱码.解决办法是在date.jsp文档中重新把刚才去掉的
<%@ page language=”java” contentType=”text/html;charset=gb2312”%>
再查看tomcat下的临时文档,test_jsp.java只增加了一句代码:
JspRuntimeLibrary.include(request, response, "date.jsp", out, true);
它并无把date.jsp文档的代码引入到test.jsp.
jsp中include的两种用法相关推荐
- jsp中include 的两种用法
1.两种用法 静态include: <%@ inlcude file ="header.jsp" %> 此时引入的是静态的jsp文件,它将引入的jsp中的源代码原封不动 ...
- jsp中include的两个用法
我们都知道在jsp中include有两种情势,分别是 <%@ include file=" "%> <jsp:include page=" " ...
- JSP中include的两种方法
一.JSP中include的两种方法 1.include指令: 1 <%@include file="文件的绝对路径或者相对路径"%> file属性是必填的(绝对或 ...
- jsp页面中include的两种使用方法
jsp页面中include的两种使用方法 include有两种用法 <%@ include file="文件的绝对路径或者相对路径"%> <jsp:include ...
- include virtual引入html文件,ASP文件引用include file和include virtual两种用法
在 ASP 编程中,我们经常遇到需要重复使用的模块代码,通常我们将这些模块代码保存为一个单独的文件,需要使用此模块代码时,在程序中通过 #include 指令引用此文件,这样使得工作效率和程序可读性大 ...
- vue3.0中setup使用(两种用法)
这篇文章主要介绍了vue3.0中setup使用,本文通过两种用法给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 一.setup函数的特性以及作用 可以确定的是 V ...
- C++中operator的两种用法
首先声明,转载自:http://blog.csdn.net/skdkjzz/article/details/45872801 转换函数的名称是类型转换的目标类型,因此,不必再为它指定返回值类型:转换函 ...
- java中super_java中super的两种用法
转自:http://blog.csdn.net/yihuei123/archive/2007/06/04/1637893.aspx 通过用static来定义方法或成员,为我们编程提供了某种便利,从某种 ...
- (转载)java中super的两种用法
(转载)http://www.cnblogs.com/rollenholt/articles/2033989.html 通过用static来定义方法或成员,为我们编程提供了某种便利,从某种程度上可以说 ...
最新文章
- tf.keras.layers.MaxPool2D 最大池化层 示例
- 别看360完成私有化 仍有三因素阻碍中概股回归
- SX1280抗WIFI强干扰电磁环境能力解析
- qq五笔linux,QQ五笔 - 五笔小字典 QQ绑定很实用
- EMNLP'20最佳论文揭晓!八块肌肉=能打电话?!
- 8. 字符串转换整数 (atoi)(正则表达式)
- 安卓编译安装python_安卓源码编译环境搭建
- c# 火狐浏览器怎么嵌入窗体中_语言C#.net 如何将子窗体嵌入到父窗体里面
- js拼接json对象_JS实现合并json对象的方法
- proteus 直流可调稳压电源
- 计算机桌面调音量的图标不见了,如何解决电脑音量图标不见了
- 2018NOIp爆零记
- 数据库缓存服务—Redis配置与优化
- xp进入win7计算机要密码怎么设置密码,XP系统设置直接跳过密码的多种方法
- Sql serever的语句
- cad考试题库绘图题答案_CAD考试试题库和参考答案解析
- 2020.12.22 ps临摹调色
- 类变量、成员变量、局部变量介绍说明
- RTX 实时系统 IntervalZero 官方文档
- Java面试题及答案2019版(上),springboot缓存技术