JSP jspinclude包含动作
jsp:include动作指令与include指令
jsp:include动作指令与include指令include动作指令可以在JSP页⾯中动态包含⼀个⽂件,这与include指令不同,前者可以动态包含⼀个⽂件,⽂件的内容可以是静态的⽂件也可以是动态的脚本,⽽且当包含的动态⽂件被修改的时候JSP引擎可以动态对其进⾏编译更新。
⽽include指令仅仅是把⼀个⽂件简单的包含在⼀个JSP页⾯中,从⽽组合成⼀个⽂件,仅仅是简单的组合作⽤,其功能没有include动作指令强⼤。
includeActon.jsp:<%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312"%><html><head><title>include动作指令使⽤⽰例程序</title></head><body><font size="2"><jsp:include flush="true" page="header.txt"></jsp:include>这是⼀个JSP动作标签include的使⽤⽰例程序。
<br><jsp:include flush="true" page="footer.jsp"></jsp:include></font></body></html>header.txt:这⾥⽤include动作指令包含⼀个静态的⽂本⽂件。
<br>footer.jsp:<%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312"%><html><body><%out.print("这⾥⽤include动作指令包含⼀个动态的JSP页⾯!");%></body></html>include.jsp:<%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312"%><html><head><title>include指令使⽤⽰例程序</title></head><body><font size="2">这是include指令的使⽤⽰例程序。
jsp的常用指令有哪些(编译指令动作指令整理)
jsp的常⽤指令有哪些(编译指令动作指令整理)Jsp包含三个编译指令和七个动作指令。
三个编译指令为:page、include、taglib。
七个动作指令为:jsp:forward、jsp:param、jsp:include、jsp:plugin、jsp:useBean、jsp:setProperty、jsp:getProperty。
1、 page指令a. 通常位于jsp页⾯的顶端,同⼀个页⾯可以有多个page指令。
语法格式如下:复制代码代码如下:〈% @page[language="Java"][extends="package.class"][import= "package. class I package. *},…"][session="true I false"][buffer="none I 8kb I size kb" 1[autoFlush="true I false"][isThreadSafe="true I false"][info="text"][errorPage="relativeURL"][contentType="mimeType[ ;charset=characterSet]" I"text/html;charset= "808859-1"][isErrorPage=" true I false"]%〉1)language属性,⼀般情况就是java,代表jsp页⾯使⽤的脚本语⾔。
2)Extends属性,确定 JSP 程序编译时所产⽣的 Java 类,需要继承的⽗类,或者需要实现的接⼝的全限定类名。
1.import属性,⽤来导⼊包,下⾯⼏个包是默认⾃动导⼊的,不需要显式导⼊。
JSP中动态INCLUDE与静态INCLUDE的区别
java面试笔试题:JSP中动态INCLUDE与静态INCLUDE的区别动态INCLUDE用jsp:include动作实现<jsp:include page="" flush="true" />它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数.静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面<%@ include file="" %>下面非常详细地解析了有关JSP动态INCLUDE和静态INCLUDE的使用方法及其区别:我们都知道在jsp中include有两种形式,分别是<%@ include file=" "%><jsp:include page=" " flush="true"/>前者是指令元素、后者是行为元素.具体它们将在何处用如何用及它们有什么区别这应该是很多人看到它都会想到的问题.下面一起来看看吧.通常当应用程序中所有的页面的某些部分(例如标题、页脚和导航栏)都相同的时候,我们就可以考虑用include.具体在哪些时候用<%@ include file=" "%>,哪些时候用<jsp:include page=" " flush="true"/>.这种形式.首先要明白的是它们之间的区别.只有了解了它们用法的不同才理解该在何时去用以及如何选择.<%@ include file=" "%>,jsp的include指令元素读入指定页面的内容.并把这些内容和原来的页面融合到一起. (这个过程是在翻译阶段:也就是jsp被转化成servlet的阶段进行的.这里对翻译阶段进行一下说明:我们知道,jsp页面不能原封不动地被传送给浏览器,所有的jsp元素都必须首先由服务器进行处理.这是通过将jsp页面转达化成servlet,然后执行这个servlet来完成的.服务器需要一个jsp容器来处理jsp页面.jsp容器通常以servlet的形式来实现,这个servlet经过配置,可以处理对jsp页面的所有请求.Jsp容器负责将jsp页面转化成servlet(称为jsp页面实现类JSP Page implementation class),并编译这个servle t.这两步就构成了翻译阶段.由此我们就会知道:jsp页面是把include指令元素所指定的页面的实际内容(也就是代码段)加入到引入它的jsp 页面中,合成一个文件后被jsp容器将它转化成servlet.可以看到这时会产生一个临时class文件和一个java文件.下面举个例子.服务器用tomcat,引入页面的jsp文件叫.被引入的页面叫.这个jsp文件里存放的是一个有关时间的jsp代码,当前的上下文根设为test<head><body><table><tr><td>有关jsp中include的两种用法.敬请关注.</td></tr></table></body></html>在文件中,我们只输出了一行文本" 有关jsp中include的两种用法.敬请关注.",现在让我们先用<%@ include file="" %>这种形式引入这个文件.你想会出现什么问题了吗此时出现了错误提示:HTTP Status 500/(0,0) Page directive: can't have multiple occurrences of contentType以下还有一堆错误,但我们只要看这里就知道问题的所在了.状态码为http 500服务器内部错误.再看下面的提示.在页面中不能指定多个contentType.原因就在这里了.是因为在翻译阶段,文件的代码被原封不动地加入到了页面从而合成一个文件.合成后的文件中就会相同的:<%@ page language="java" contentType="text/html;charset=gb2312"%>这句代码.解决的办法是把文件中的这句删掉.刷新后再请求页面请求在页面显示如下2003年12月10日13:12:40有关jsp中include的两种用法.敬请关注.这时我们还不能发现什么.还是去查看tomcat下的临时文件吧.到那里去看看文件的内容是否已被加入到了文件中.<注.此处的tomcat装在E盘根目录下>目录E:\tomcat\work\Standalone\localhost\test.在这个目录下会看到和两个文件.这里的java文件就是jsp容器将jsp转化成了servlet而得到的这个文件.相对应的这个文件就是编译这个servlet文件产生的类文件了.打开所产生的servlet文件.此时我们会发现,在文件被转化成servlet文件时,在输出的<haed>之间加入了一些不是页面里面的代码,新加入的内容就是里面的代码: 新加入了哪些内容或是否真的加入了新的内容请自己测试去看一下就会一目了然了.在这里不再详述.以上就是我们用<%@ include file=""%>这种形式得到的结果.下面我们换用<jsp:include page="" flush="true"/>也就是将<%@ include file=""%>换成<jsp:include page="" flush="true"/>,然后请求.2003 ê 1210 13:30:13有关jsp中include的两种用法.敬请关注.此时会在页面上看见.我们所引入输出的日期中中文出现了乱码.什么原因是因为include行为元素是在请求处理阶段执行的(此处要对请求处理阶段进行说明一下.Jsp容器除了上面提到的负责将jsp页面转化成servlet外,还负责调用jsp页面实现类以处理每个请求并产生应答.这个阶段我们就称为请求处理阶段.请求处理阶段仅执行类文件).所以在我们作include行为元素引入页面时,实际只是引用了这个文件被转化并被编译后产生的servlet类文件.既如此, 就是作为一个单独的文件在执行后才被文件运行时调用.由于文件中没有指定字符编码.所以出现了乱码.解决办法是在文件中重新把刚才去掉的<%@ page language="java" contentType="text/html;charset=gb2312"%>这行语句加入后刷新重新运行.此时页面显示正确,并跟用include指令正常运行时一样.再查看tomcat下的临时文件会发现.此时多出了一个文件和一个文件.这两个文件得来的方式跟和文件得来的方式一样.再查看一下此时文件的代码会发现.此时只新增加了一句代码:(request, response, "", out, true);它并没有把文件的代码加入到.只是在运行时引入了页面执行后所产生的应答.这意味着我们可以指定任何能够产生应答的Web资源,(例如一个servlet或一个jsp页面),只要这些资源所产生的类型和jsp页面产生的内容类型相同.JSP容器将通过一个内部的函数调用来执行指定的资源.因此,这些被引入的资源可以帮助处理原来的请求,所以这些资源可以访问请求作用域内的所有对象.以及所有原来的请求参数.由于在主页面被请求时,这些页面还没有被引入到主页面中,所以你可以对page属性使用一个请求时属性值,以便根据运行时的情况来决定要引入哪一个页面.还可以添加一些将被引入的页面读取的请求参数.<jsp:include page="<%=pageSelectedAtRuntime%>" flush="true" ><jsp:param name="fitstParamer" value="firstValue"><jsp:param name="lastParamer" value="lastValue"></jsp:include>如果修改了被引入的jsp页面,那么可以立刻使用该页面的最新版本,这是因为对待被引入的页面的方式与对待由浏览器直接调用的jsp页面的方式完全相同.即容器检测页面的变化,并自动进入翻译阶段,以得到页面的最新版本.(注意,include行为元素同jsp其它元素一样,没有行为体时要以"/"结束.就像下面这样.<jsp:include page="<%=pageSelectedAtRuntime%>" flush="true" />)以下是对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的前缀进行解释,如果它不是以斜杠开头,那么就是页面相关的路径,就根据引入这个文件的页面所在的路径进行解释.更多有关URL是如何解释的请参考相关资料或书籍.。
jspinclude用法
jspinclude用法JSP(Java Server Pages)是一种用于构建动态网页的技术,它允许将Java代码嵌入到HTML页面中。
在大型的JSP项目中,经常会遇到多个JSP页面之间需要共享一些通用的代码或功能的情况。
为了实现代码的重用和模块化,JSP提供了include指令来引入其他JSP页面的内容。
include指令用于将一个JSP页面的内容嵌入到另一个JSP页面中。
在JSP中,可以使用两种方式来进行include操作:静态包含(static include)和动态包含(dynamic include)。
1. 静态包含(static include):静态包含是在编译时完成的,使用静态包含时,被引入的页面的内容会包含在包含页面中,一起编译和执行。
可以通过以下方式使用静态包含:```jsp```静态包含的特点是:在编译时,被包含的页面的内容会被复制到包含页面中,在运行时,包含页面和被包含页面是一个整体,共享相同的上下文信息。
静态包含适用于包含一些静态的、不需要动态生成的内容。
在包含页面的任何地方使用include指令,被包含的页面都会在该位置展示。
2. 动态包含(dynamic include):动态包含是在运行时完成的,使用动态包含时,可以在运行时根据条件来决定是否包含一些页面。
可以通过以下方式使用动态包含:```jsp<jsp:include page="included.jsp"></jsp:include>```动态包含的特点是:在运行时,根据条件将被包含的页面插入到包含页面中。
动态包含可以在包含页面中的任意位置使用,可以在循环中动态判断是否需要包含一些页面。
动态包含适用于根据运行时条件来包含不同的内容。
总结:。
JSP页面的构成
JSP页⾯的构成JSP页⾯就是带有JSP元素的常规Web页⾯,它由静态内容和动态内容构成。
其中,静态内容指HTML元素,动态内容(JSP元素)包括指令元素、脚本元素、动作元素、注释等内容。
1、指令元素指令元素主要⽤于为转换阶段提供JSP页⾯的相关信息,指令不会产⽣任何输出到当前的输出流中,它指定了有关页⾯本⾝的信息,这些信息在请求之间⼀直保持不变。
指令元素语法为<%@ directive{attr="value"}%>。
指令元素有三种:page、include、taglib。
1)page该指令⽤于整个页⾯,定义与页⾯相关的属性,它是JSP页⾯和容器的通信员,⼀般放在JSP页⾯的第⼀⾏。
与page相关的属性如下:属性描述buffer指定out对象使⽤缓冲区的⼤⼩autoFlush控制out对象的缓存区contentType指定当前JSP页⾯的MIME类型和字符编码errorPage指定当JSP页⾯发⽣异常时需要转向的错误处理页⾯isErrorPage指定当前页⾯是否可以作为另⼀个JSP页⾯的错误处理页⾯extends指定servlet从哪⼀个类继承import导⼊要使⽤的Java类info定义JSP页⾯的描述信息isThreadSafe指定对JSP页⾯的访问是否为线程安全language定义JSP页⾯所⽤的脚本语⾔,默认是Javasession指定JSP页⾯是否使⽤sessionisELIgnored指定是否执⾏EL表达式isScriptingEnabled确定脚本元素能否被使⽤a、import="导包列表",可以多次导⼊,也可以⽤逗号分隔开。
b、language=“scriptingLangeuage”,指定在脚本元素使⽤的脚本语⾔,默认是Java。
c、contentType="cinfo",指定HTTP响应的头部的Content-Type值。
JSP课程06单元 第3章:include动作
Include动作标记:动态包含
原理: 被包含文件先由服务器编译, 产生的html源文件再放到c.jsp 中 最终的html代码 服务器 。。。
c.Jsp 。。。 <jsp:include page=―d.jsp" /> 。。。 c.Jsp 。。。
d.Jsp的html代码 。。。
编译
。。。
d.jsp
ch3_8.jsp 程序段变量dx为3.14
dx被放到x中传给eg3_8_1.jsp
程序段变量dy为4.3
dy被放到y中传给eg3_8_1.jsp
ch3_8_1.jsp
接受x,存在字符串sx中 将sx转为double类型的dx 打印dx 接受y,存在字符串sy中 将sy转为double类型的dy 打印dy 比较dx和dy,打印较大者
【例3.8】inlude与param子标记使用示例。
<%@ page contentType="text/html;charset=GB2312" %> <html> <head> <title>这是Include动作标记示例</title> </head> <body bgcolor="cyan"> <% double dx=3.14,dy=4.3;%> <p>主页面信息:加载ch3_8_1.jsp文件,求两个数的最大值: 下面开始加载。 <jsp:include page="ch3_8_1.jsp" > <jsp:param name="x" value="<%=dx%>" /> <jsp:param name="y" value="<%=dy%>" /> </jsp:include> <p>主页面信息:现在已经加载完毕。</p> 将参数dy传给 </body> ch3_8_1.jsp, </html> dy的值为4.3
JSP动作-include和forward简介和使用
JSP动作-include和forward简介和使⽤1、动作元素简介1)定义:动作元素是在客户端请求时期动态执⾏的,每次有客户端请求时可能都会被执⾏⼀次2)语法格式: ①空标记形式:<jsp:动作名称属性1="属性值1" 属性2="属性值2" …… /> ②⾮空标记形式: <jsp:动作名称属性1="属性值1" 属性2="属性值2" …… /> ... </jsp:动作名称>2、include动作元素1)定义:在JSP页⾯的执⾏过程中,将包含进来的⽂件插⼊到JSP页⾯的特定位置。
2)语法格式: ①不设置任何参数: <jsp:include page="URL" flush="true" /> ②通过<jsp:param>动作设置参数: <jsp:include page="relative URL" flush="ture"> [<jsp:param.../>] * </jsp:include> 属性:page:指定被包含资源的相对路径,该路径是相对于当前JSP页⾯的URLflush:可选,设置是否刷新缓冲区,默认值为false。
如果设置为true,则当前页⾯输出使⽤缓冲区的情况下⾸选刷新缓冲区,然后执⾏包含操作。
3)⽤法⽰例:<jsp:include page="time.jsp"> <jsp:param name="time" value="current"/></jsp:include>3、forward动作元素1)定义:将客户端所发送的请求从⼀个JSP页⾯转发到另⼀个JSP页⾯、Servlet或者静态资源⽂件,请求被转向到的资源必须位于发送请求的JSP页⾯相同的上下⽂环境之中。
jspinclude用法
jspinclude用法1.静态包含静态包含是指在JSP编译时将被包含的文件的内容直接嵌入到当前JSP文件中。
静态包含的语法如下:其中,filename是要被包含的文件名,可以是相对路径或绝对路径。
静态包含的特点是包含的文件内容会在JSP文件编译时被插入到当前文件中,因此在运行时只剩下一个JSP文件。
这种方式适合用于在多个JSP页面中共享相同的代码块或页面布局,可以提高代码的复用性和可维护性。
2.动态包含动态包含是指在JSP运行时动态地决定要被包含的文件。
动态包含的语法如下:<jsp:include page="filename" [flush="true,false"] [errorPage="url"] [isErrorPage="true,false"] />其中,filename是要被包含的文件名,可以是相对路径或绝对路径。
flush属性表示是否在包含之前刷新缓冲区,默认值为false。
errorPage属性是一个可选属性,用于指定该包含的JSP文件是一个错误页面。
isErrorPage属性表示包含的JSP文件是否是一个错误页面,如果为true,则可以使用内置对象exception和error_page来处理异常。
动态包含和静态包含的最大区别在于,动态包含是在运行时进行的,因此可以根据业务逻辑决定是否包含一些文件。
动态包含的文件可以由用户输入、数据库查询结果或者其他变量来决定。
使用include指令的一般步骤如下:1. 创建两个JSP文件,一个叫做"main.jsp",另一个叫做"included.jsp"。
2. 在included.jsp文件中填入以下内容:<!DOCTYPE html><html><head><title>included.jsp</title></head><body><p>This is the included page.</p></body></html>3. 在main.jsp文件中填入以下内容:<!DOCTYPE html><html><head><title>main.jsp</title></head><body><p>This is the main page.</p></body></html>4. 运行main.jsp文件,你会看到main.jsp页面中的内容被显示出来,然后是included.jsp页面中的内容。
JSP基本的语法、3个编译指令、7个动作指令、9个内置对象
JSP基本的语法、3个编译指令、7个动作指令、9个内置对象⽬录⼀、jsp概述JSP是java server page的缩写,其**==本质是⼀个简化的servlet**,是⼀种动态⽹页技术标准。
jsp页⾯是在HTML页⾯中嵌⼊java程序段。
使⽤jsp开发的应⽤程序能够跨平台。
⼆、jsp基本的语法2.1 jsp表达式jsp表达式⽤于向页⾯输出信息。
语法格式例如以下:<%= 表达式 %>如:<%= 5+6 %>注意:<%与=之间不能有空格,=与后⾯的表达式之间能够有空格,另外没有语句结束符号;。
2.2 jsp声明标识声明标识⽤语在jsp页⾯中定义全局的变量或者⽅法,通过声明标识定义的变量和⽅法能够被整个jsp页⾯訪问。
语法格式例如以下:<%!声明变量或者⽅法的代码%>如<%!String str = "test";%>注意:<%与!之间不能有空格,!与其后⾯的代码之间能够有空格。
2.3 jsp代码段代码⽚段就是嵌在jsp页⾯中的java代码或脚本代码。
会在页⾯请求的处理期间被运⾏,java代码能够实现定义变量、流程控制等功能。
脚本代码能够通过使⽤jsp内置对象在jsp页⾯输出内容、处理请求和响应、訪问session等,代码⽚段的语法格式例如以下:<% java代码或者脚本代码 %>2.4 jsp注释2.4.1 HTML注释HTML注释格式:<!-- html凝视 -->html凝视不会显⽰在⽹页中。
在浏览器中查看源代码的时候能够看到注释信息。
2.4.2 代码⽚段注释由于代码⽚段即为java代码或者脚本代码,代码⽚段的注释和java语法⼀样。
单⾏注释写在//之后,多⾏注释写在/* */ 之间,⽂档提⽰注释写在/**与 */之间。
//单⾏注释/*多⾏注释第⼀⾏多⾏注释第⼆⾏*//**⽂档注释*/2.4.3 隐藏注释html注释在查看⽹页源代码的时候能够看到,所以严格来说这样的注释并不安全,jsp提供的隐藏注释在浏览器和查看源代码的时候都看不到。
JSP之静态include指令、动态Include指令
JSP之静态include指令、动态Include指令(⼀)使⽤静态include指令<%@ page language="java" contentType="text/html; charset=gb2312"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Insert title here</title></head><body><%@include file="scriptlet.jsp" %></body></html>(⼆)使⽤动态Include指令<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Insert title here</title></head><body><jsp:include page="scriptlet.jsp" /></body></html>scriptlet.jsp页⾯代码如下:<%@ page language="java" contentType="text/html; charset=gb2312"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Insert title here</title></head><body><%out.write("来⾃scriptlet.jsp");%></body></html>(三)静态导⼊和动态导⼊的区别:(1)静态导⼊(include指令)通过file属性指定被包含的⽂件,并且file属性不⽀持任何表达式;动态导⼊(include动作)通过page属性指定被包含的⽂件,且page属性⽀持JSP表达式;(2)使⽤静态导⼊(include指令)时,被包含的⽂件内容会原封不动的插⼊到包含页中,然后JSP编译器再将合成后的⽂件最终编译成⼀个Java⽂件;使⽤动态导⼊(include动作)包含⽂件时,当该标识被执⾏时,程序会将请求转发(不是请求重定向)到被包含的页⾯,并将执⾏结果输出到浏览器中,然后返回包含页继续执⾏后⾯的代码。
JSP include指令
JSP include指令
该指命会在JSP编译时,插入一个包含文本或代码的文件。
当使用<%@ include %>指命时,这个包含的过程就当是静态的,与ASP中代码中非常相似。
静态的包含就是指这个被包含的文件,将会被插入到JSP文件中去,这个包含的文件可以是JSP文件、HTML文件、文本文件等。
如果包含的是JSP文件,这个包含的JSP的文件中代码将会被执行。
如果你仅仅只是用include 来包含一个静态文件。
那么这个包含的文件所执行的结果将会插入到JSP文件中放<% @ include %>的地方。
一旦包含文件被执行,那么主JSP文件的过程将会被恢复,继续执行下一行。
文件路径一般使用相对路径,这样如果程序代码文件进行迁移也不会有所影响。
路径如果以“/”开头,则表明使用的是相对JSP服务器应用的根目录的路径;如果直接用文件名或是文件夹名+文件名,则表明是相对本JSP文件当前目录的相对路径。
例如,分别创建一个include_homepage.jsp文件和一个include_subpage.jsp文件,此时在include_homepage文件中包含include_subpage.jsp文件。
详细代码如下:
通过上述代码,可以很容易理解Include_subpage.jsp文件中,只有添加有page 指令的JSP文件,其内容为静态的文本。
而在include_homepage.jsp文件的文本内容后面,添加<%@ include file="include_subpage.jsp"%>语句,来包含子页面,运行效果如图3-1所示。
图3-1 包含文件效果。
JSP的3个编译指令7个动作指令9个内置对象
JSP的3个编译指令,7个动作指令,9个内置对象JSP 3个编译指令1)page指令(基本不需要用到,使用默认即可)主要属性:1.Language:指定脚本所采用的语言类型,现在只支持java2.Extends:定义当前jsp产生的servlet是继承哪个类3.Import:定义当前jsp使用的java API,多个API之间用逗号分开4.Session:指定是否使用session,默认true5.Buffer:指定输出流的缓存大小,默认8K6.autoFlush:指定输出缓冲区是否自动清除,默认true7.isThreadSafe:指定能否出来多个线程的同步请求8.info:指定页面的相关信息9.errorPage:指定当前页出错时转向的错误处理页面(提示友好信息)格式:errorPage=“处理页面地址”10.contentType:指定当前页面的mime类型的编码格式Eg:contentType="text/html; charset=GB18030"11.isErrorPage:指定当前页面是否为处理错误页面(true|false)12.pageEncoding:指定页面编码的字符集,默认为ISO-8859-1,当页面中含有中文时应使用“gbk”或“gb18030”或“gb2312”。
Eg:pageEncoding="GB18030"2)include指令<%@ include file=“URL”%>3)taglib指令<%@ taglib prefix=“”uri=“”%>说明:uri用于指定prefix定义的前缀所代表的标签库Eg:<%@ taglib prefic=”s2”uri=”/struts-tags”%>JSP的7个动作指令1)jsp:include 指令用于在请求处理阶段包含来自一个Servlet或jsp页面的响应。
jsp三大指令标记,七大动作标记、详解。
jsp三⼤指令标记,七⼤动作标记、详解。
JSP的基本构成JSP页⾯主要由指令标签,注释,嵌⼊Java代码,JSP动作标签,HTML标记语⾔等五个元素组成。
3个指令标签1 、page指令page指令⽤户定义JSP页⾯中的全局属性,Eg:<%@ page attr1=”value1” atrr2=”value2”.......%>page指令对整个页⾯有效,包括静态的包含⽂件,但page指令不能⽤于被动态包含的⽂件,例如使⽤<jsp:include>包含的⽂件。
在⼀个JSP页⾯中可以使⽤多个page指令,但page指令中的属性只能出现⼀次(import属性除外)。
page指令的常⽤属性如下:(1) language属性该属性⽤于设置JSP页⾯使⽤的语⾔,⽬前只⽀持Java语⾔。
例:<%@ page language=”java” %>(2) extends属性该属性⽤于设置JSP页⾯所继承的Java类,JSP和Servlet都可以继承指定的⽗类,但该属性并不常⽤.(3) import属性该属性⽤于设置JSP所导⼊的类包,JSP页⾯可以嵌⼊Java代码⽚段,这些Java代码在调⽤API时需要导⼊相应的类包。
例: <%@page import=”java.util.*” %>(4) pageEncoding属性该属性⽤于定义JSP页⾯的编码格式,指定的⽂件编码格式。
例:<%@ page pageEncoding=”UTF-8” %>(5) contentType属性该属性⽤于设置JSP页⾯的MIME类型和字符编码,浏览器会根据些解释页⾯。
例:<%@ pagecontentType=”text/html;charset=utf-8” %>(6) session属性该属性⽤于定义JSP页⾯是否使⽤session会话对象,其值是boolean类型,默认值为true. Eg:<%@ page session=”true” %>(7) buffer属性该属性⽤于设置out对象所使⽤的缓冲区⼤⼩,默认⼤⼩是8KB,单位只能是8的倍数。
include的两种用法
include指令和include动作的区别
include指令和include动作的区别include指令和include动作都能实现将外部文档包含到JSP文档中的功能,名称也很相似,非常容易混淆。
include指令和include动作到底有什么分别,哪一种方式会更好呢?1.include指令include可以在JSP页面转换成Servlet之前,将JSP代码插入其中。
它的主要优点是功能强大,所包含的代码可以含有总体上影响主页面的JSP构造,比如属性、方法的定义和文档类型的设定。
它的缺点是难于维护只要被包含的页面发生更改,就得更改主页面,这是因为主页面不会自动地查看被包含的页面是否发生更改。
include指令的语法格式如下<%@ include file="Relative Url"%>2.include动作jsp:include动作是在主页面被请求时,将次级页面的输出包含进来。
尽管被包含的页面的输出中不能含有JSP,但这些页面可以是其他资源所产生的结果。
服务器按照正常的方式对指向被包含资源的URL进行解释,因而这个URL可以是Servlet或JSP页面。
服务器以通常的方式运行被包含的页面,将产生的输出放到主页面中,这种方式与RequestDispatcher 类的include方法一致。
它的优点是在被包含的页面发生更改时,无须对主页面做出修改。
它的缺点是所包含的是次级页面的输出,而非次级页面的实际代码,所以在被包含的页面中不能使用任何有可能在整体上影响主页面的JSP构造。
jsp:include动作的完整语法如下<jsp:include page="Relative path to resource" flush="true">其中jsp:include之间不能有空格,page属性指定被包含的页面,这个属性是必需的,是指向某种资源的相对URL。
如果这个相对URL不是以/开头,则将其解释为相对于主页面的路径;如果是以/开头,是这个URL被解释为相对于当前WEB应用的根目录,而不是服务器的根目录,这是因为该URL是由服务器来解释的,不是由用户的浏览器来解释的。
JSP中动态INCLUDE与静态INCLUDE的区别
java面试笔试题:JSP中动态INCLUDE与静态INCLUDE的区别?[日期:2008-09-15] 来源:作者:志伟动态I NC LU DE用js p:i nc lu de动作实现<js p:i nc lu de pag e="i nc lud ed.js p"fl us h="tr ue"/>它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数.静态I N C LU DE用inc lu de伪码实现,定不会检查所含文件的变化,适用于包含静态页面<%@i nc lu de fil e= "i nc lu ded.ht m"%>下面非常详细地解析了有关JSP动态I NC LU DE和静态I N CLU DE的使用方法及其区别:我们都知道在js p中inc l ude有两种形式,分别是<%@i nc lu de file=""%><js p:i nc lu de p age=""flus h="t rue"/>前者是指令元素、后者是行为元素.具体它们将在何处用?如何用及它们有什么区别?这应该是很多人看到它都会想到的问题.下面一起来看看吧.通常当应用程序中所有的页面的某些部分(例如标题、页脚和导航栏)都相同的时候,我们就可以考虑用inc l ud e.具体在哪些时候用<%@i nc lud e file=""%>,哪些时候用<js p:i nc lu de p age=""flus h="t rue"/>.这种形式.首先要明白的是它们之间的区别.只有了解了它们用法的不同才理解该在何时去用以及如何选择.<%@i nc lu de file=""%>,js p的inc l ude指令元素读入指定页面的内容.并把这些内容和原来的页面融合到一起.(这个过程是在翻译阶段:也就是js p被转化成s e rvlet的阶段进行的.这里对翻译阶段进行一下说明:我们知道,js p页面不能原封不动地被传送给浏览器,所有的js p元素都必须首先由服务器进行处理.这是通过将js p页面转达化成s e rvle t,然后执行这个s ervl et来完成的.服务器需要一个js p容器来处理js p页面.js p容器通常以s e rvlet的形式来实现,这个s e rvl et经过配置,可以处理对js p页面的所有请求.Js p容器负责将js p页面转化成s erv let(称为js p页面实现类?JSP P age im ple me nta tio n c las s),并编译这个s er vlet.这两步就构成了翻译阶段.由此我们就会知道:js p页面是把i nc lu de指令元素所指定的页面的实际内容(也就是代码段)加入到引入它的js p页面中,合成一个文件后被js p容器将它转化成s ervl et.可以看到这时会产生一个临时c las s文件和一个jav a文件.下面举个例子.服务器用to mc at,引入页面的js p文件叫t es t.js p.被引入的页面叫d ate.js p.这个js p文件里存放的是一个有关时间的js p代码,当前的上下文根设为tes t//======d a te.js p的源文件=====//<%@p age lan g uage="java"c o nte ntT yp e="te xt/h t ml;c ha rs et=gb2312"%><%java.ut il.Dat e da te=ne w java.uti l.Date();St ri ng dat e_c n="";St ri ng dat eSt r= "";s witc h(dat e.ge tDay()){c as e 0:d ate_c n="日"; b rea k;c as e 1:d ate_c n="一"; b rea k;c as e 2:d ate_c n="二"; b rea k;c as e 3:d ate_c n="三"; b rea k;c as e 4:d ate_c n="四"; b rea k;c as e 5:d ate_c n="五"; b rea k;c as e 6:d ate_c n="六"; b rea k;}d ateS tr= (1900+dat e.ge tY ear()) + "年"+ (date.ge tM ont h()+1) + "月"+ da te.getDa te() + "日(星期"+ da te_c n+ ")";%>d oc u men t.writ e("<%=da teSt r%>");//======以下是tes t.js p的源文件=============//<%@p age lan g uage="java"c o nte ntT yp e="te xt/h t ml;c ha rs et=gb2312"%><h t ml><h ea d><t itl e>i nc lude的两种用法</t itle><js p:i nc lu de p age="da te.js p"fl us h="t r ue"/><%--@i nc lud e file="da te.js p"%-->//我们在这里用inc l ude的两种不同形式来引入dat e.js p这个文件.<h ea d><b od y><t abl e><tr><t d>有关js p中i nc lude的两种用法.敬请关注.</t d></tr></t abl e></b od y></h t ml>在tes t.js p文件中,我们只输出了一行文本"有关js p中inc lu de的两种用法.敬请关注.",现在让我们先用<%@i nc lu de fil e="d ate.js p"%>这种形式引入d ate.js p这个文件.你想会出现什么问题了吗?此时出现了错误提示:H TT P Sta tus500?o rg.apac he.jas pe r.Jas pe rE xc ept io n: /dat e.js p(0,0) P age dir ec tive: c an't have m ulti ple oc c u r r enc es o f c ont en tT ype以下还有一堆错误,但我们只要看这里就知道问题的所在了.状态码为htt p500服务器内部错误.再看下面的提示.在d ate.js p页面中不能指定多个c o nte ntT yp e.原因就在这里了.是因为在翻译阶段,date.js p文件的代码被原封不动地加入到了t es t.js p页面从而合成一个文件.合成后的文件中就会相同的:<%@p age lan g uage="java"c o nte ntT yp e="te xt/h t ml;c ha rs et=gb2312"%>这句代码.解决的办法是把d ate.js p文件中的这句删掉.刷新后再请求t es t.js p页面请求tes t.js p在页面显示如下2003年12月10日13:12:40有关js p中i nc lude的两种用法.敬请关注.这时我们还不能发现什么.还是去查看to mc at下的临时文件吧.到那里去看看d ate.js p文件的内容是否已被加入到了tes t.js p文件中.<注.此处的to mc at装在E盘根目录下>目录E:\to mc at\wo rk\S tan dal on e\loc al hos t\tes t.在这个目录下会看到tes t_js p.java和tes t_js p.c l ass两个文件.这里的java文件就是js p容器将js p转化成了s e rvlet而得到的tes t_js p.java这个文件.相对应的tes t_js p.c las s这个文件就是编译tes t_js p.java这个s ervl et文件产生的类文件了.打开所产生的s er vlet文件(tes t_js p.java).此时我们会发现,在t es t.js p文件被转化成s e rvlet文件时,在输出的<hae d>之间加入了一些不是t es t.js p页面里面的代码,新加入的内容就是dat e.js p里面的代码: 新加入了哪些内容或是否真的加入了新的内容请自己测试去看一下就会一目了然了.在这里不再详述.以上就是我们用<%@inc l ude file="dat e.js p"%>这种形式得到的结果.下面我们换用<js p:i nc lu de p age="da e.js p"flus h="t rue"/>也就是将<%@i nc lu de file="da te.js p"%>换成<js p:inc l ude pag e="d ae.js p"fl us h="t r ue"/>,然后请求tes t.js p.2003?ê12??10??13:30:13有关js p中i nc lude的两种用法.敬请关注.此时会在页面上看见.我们所引入d ate.js p输出的日期中中文出现了乱码.什么原因?是因为i nc lu de行为元素是在请求处理阶段执行的(此处要对请求处理阶段进行说明一下.Js p容器除了上面提到的负责将js p页面转化成s e rv let外,还负责调用js p页面实现类以处理每个请求并产生应答.这个阶段我们就称为请求处理阶段.请求处理阶段仅执行类文件).所以在我们作inc lu d e行为元素引入页面时,实际只是引用了d ate.js p这个文件被转化并被编译后产生的s e r vlet类文件.既如此, da te.js p就是作为一个单独的文件在执行后才被tes t.js p文件运行时调用.由于da te.js p文件中没有指定字符编码.所以出现了乱码.解决办法是在da te.js p文件中重新把刚才去掉的<%@p age lan g uage="java"c o nte ntT yp e="te xt/h t ml;c ha rs et=gb2312"%>这行语句加入后刷新重新运行.此时页面显示正确,并跟用i nc lude指令正常运行时一样.再查看t o mc at下的临时文件会发现.此时多出了一个da te_js p.java文件和一个da te_js p.c lass文件.这两个文件得来的方式跟tes t_js p.java和tes t_js p.c l ass文件得来的方式一样.再查看一下此时tes t_js p.java文件的代码会发现.此时只新增加了一句代码:Js pR unt im eLib ra ry.i nc lu de(r eq ues t, res po ns e, "da te.js p", o ut, tr ue);它并没有把d ate.js p文件的代码加入到tes t.js p.只是在运行时引入了da te.js p页面执行后所产生的应答.这意味着我们可以指定任何能够产生应答的Web资源,(例如一个s er vlet或一个js p页面),只要这些资源所产生的类型和js p页面产生的内容类型相同.JSP容器将通过一个内部的函数调用来执行指定的资源.因此,这些被引入的资源可以帮助处理原来的请求,所以这些资源可以访问请求作用域内的所有对象.以及所有原来的请求参数.由于在主页面被请求时,这些页面还没有被引入到主页面中,所以你可以对pa ge属性使用一个请求时属性值,以便根据运行时的情况来决定要引入哪一个页面.还可以添加一些将被引入的页面读取的请求参数.<js p:i nc lu de p age="<%=p ageS elec te dA tRun ti me%>"fl us h="t r ue"><js p:p ar am na me="fits tP ara me r"va lue="fi rs tV alue"><js p:p ar am na me="las tP ara me r"va lue="las tV alue"></js p:i nc lu de>如果修改了被引入的js p页面,那么可以立刻使用该页面的最新版本,这是因为对待被引入的页面的方式与对待由浏览器直接调用的js p页面的方式完全相同.即容器检测页面的变化,并自动进入翻译阶段,以得到页面的最新版本.(注意,i nc lu de行为元素同js p其它元素一样,没有行为体时要以"/"结束.就像下面这样.<js p:i nc lu de p age="<%=p ageS elec te dA tRun ti me%>"fl us h="t r ue"/>)以下是对i nc lu de两种用法的区别主要有两个方面的不同;一:执行时间上:<%@i nc lu de file="r elat iveU RI"%> 是在翻译阶段执行<js p:i nc lu de p age="re lat iveU RI" fl us h="tr ue"/> 在请求处理阶段执行.二:引入内容的不同:<%@i nc lu de file="r elat iveU RI"%>引入静态文本(h tm l,js p),在JSP页面被转化成s ervl et之前和它融和到一起.<js p:i nc lu de p age="re lat iveU RI" fl us h="tr ue"/>引入执行页面或s ervl et所生成的应答文本.另外在两种用法中file和pa ge属性都被解释为一个相对的U RI.如果它以斜杠开头,那么它就是一个环境相关的路径.将根据赋给应用程序的U RI的前缀进行解释,如果它不是以斜杠开头,那么就是页面相关的路径,就根据引入这个文件的页面所在的路径进行解释.更多有关U RL是如何解释的请参考相关资料或书籍.。
jsp中include指令用法,%@includefile=...%和jsp:includ。。。
jsp中 include指令用法, %@includefile=...%和 jsp: iFra bibliotekclud。。 。
1. 什么是jsp 文件? 个人理解。 jsp 是一个容器,可以将我们编写的jsp文件,编译成 Java文件。(客户端向服务端发起第一次请求的时候)。然后编译成class 文件执行。 2.include 作用 ? Include指令可以在JSP程序中插入多个外部文件(如:JSP、HTML、java程序,甚至是文本)。 在转换成Servlet之前,include指令就会将相应的文件包含进主文件,然后一并转换成Servlet,编译生成一个class文件,最后一起执行。
三,动作?
四 <%@ include file="..."%> 和 <jsp:include page="..." flush="true" />? <%@ include file="..."%> 为静态的 <jsp:include page="..." flush="true" />为动态的
jsp中的include静态包含与动态包含,
jsp中的include静态包含与动态包含,d动态包含与静态包含的最⼤区别是静态包含:<%@ include file = "⽂件名.jsp"%>,在<body>的标签外定义。
在没有编译的时候,两个java⽂件都已经包含起来了(合并成⼀个)。
动态包含:<%jsp:include page= "/⽂件名.jsp"> <jsp:include>,在<body>标签内定义。
在编译之前永远是两个java⽂件。
静态包含实例代码:先定义⼀个hel.jsp<%--Created by IntelliJ IDEA.User: sunyubinDate: 2018/9/11Time: 下午8:25To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>Title</title></head><body><%String name ="sunyubin";%></body></html>再定义⼀个lo.jsp⽂件:<%--Created by IntelliJ IDEA.User: sunyubinDate: 2018/9/11Time: 下午8:27To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" %><%@ include file="/hel.jsp" %><html><head><title>Title</title></head><body><h1><%=name %><h1/></body></html> 先运⾏hel.jsp,再运⾏lo.jsp。
include指令与动作
Include指令与动作1include指令简介include指令用于当前的JSP页面中,在当前使用该指令的位置嵌入其他的文件,如果被包含的文件中有可执行的代码,则显示代码执行后的结果。
该指令的使用格式如下:<%@ include file=”文件的绝对路径或相对路径”%>File属性指定被包含的文件,该属性不支持任何表达式,也不允许通过<%@ include file=”hello.jsp?name=a”%>的方式来传递参数。
2include动作简介<jsp:include>动作标识用于向当前的页面中包含其他的文件,这个文件可以是动态文件也可以是静态文件。
该标识的使用格式如下:<jsp:include page=”被包含文件的路径”flush=”true|false”/>或者向被包含的动态页面中传递参数:<jsp:include page=”被包含文件的路径”flush=”true|false”><jsp:param name=”参数名称”valude=”参数值”/></jsp:include>3两者之间的区别3.1属性的区别include指令将file属性值看作一个实际存在的文件的路径,该属性不支持任何表达式。
若应用了JSP的表达式,则会抛出异常。
当代码为:<% String P="2.jsp"; %> <%@ include file="<%=p%>" %>会抛出如下图的异常:图表 1 include指令抛出的异常include动作的page属性则可以支持JSP的表达式3.2处理方式的区别include指令会原封不动的插入被包含的文件,然后编译器再将合成的文件进行编译,所以最终编译后的文件只有一个。
而对于include动作来说,当标识被执行时,主文件会将请求转发到被包含的文件,并将执行的结果输出到浏览器中,然后返回主文件继续执行后面的代码。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JSP <jsp:include>包含动作
<jsp:include>动作指令表示在当前的JSP页面中,包含静态或动态资源。
前面已经介绍过include指令,它是在JSP文件被转换成Servlet的时候引入文件,而这里的jsp:include动作不同,插入文件的时间是在页面被请求的时候。
<jsp:include>动作的文件引入时间决定了它的效率要稍微差一点,而且被引用文件不能包含某些JSP代码(例如不能设置HTTP头),但它的灵活性却要好得多。
<jsp:include>动作可以在当前JSP文件中包含txt文件、JSP文件、HTML文件和Servlet文件。
例如:
下面对jsp:include标签具体格式中的参数说明如下:
●page="{relativeURL | <%= expression %>}
该参数为一相对路径,或者是代表相对路径的表达式。
如果路径以“/”开头,那么路径主要是参照JSP应用的上下关系路径。
如果路径是以文件名或目录名开头,那么这个路径就是正在使用JSP文件的当前路径。
●flush="true"
注意,这里用户必须使用flush="true",不能使用false值,默认值为false。
●<jsp:param name="parameterName" value="{parameterValue | …/>
<jsp:param>子句能用来传递一个或多个参数给动态文件,用户可以在一个页面中使用多个<jsp:param>来传递多个参数。
<jsp:include>和<%@ include %>指令不同的是,<jsp:include>包含的内容可以是动态改变的,它在执行时才确定,而<%@ include %>包含的内容是固定不变的,一经编译,就不能改变。
现在创建一个实例,演示<jsp:include>指令使用方法。
在该实例中,需要使用上一个小节中创建的bottom.html和top.html文件。
打开记事本,创建JExample5.js
上述文件在保存时,JEx.jsp和JExample5.jsp文件编码形式应为utf-8编码。
将上述文件复制到Tomcat服务器中的部署目录内,打开IE浏览器,在地址栏中输入http://localhost:8080/JSPExample/JExample5.jsp,单击【转到】,会显示如图2-5所示窗口:
图2-5 jsp:include动作指令。