Java EE学习之(四)JSP的编译指令
2013-01-22 20:45
274 查看
JSP的编译指令是通知JSP引擎的消息,他不直接生成输出。编译指令都有默认值,因此开发人员不用为每个指令都设置值。常见的编译指令有三个。
Page:该指令是针对当前页面的指令。
Include:用于指定包含另一个界面
Taglib:用于定义和访问自定义标签。
编译指令的格式:<%@ 编译指令名 属性名=”属性值” ···%>
<%@page
[session=”true|false”]
[autoFlush=” true|false”]
[isThreadSafe=” true|false”]
[isErrorPage=” true|false”]
[errorPage=”relativeURL”]
[pageEncoding=”ISO-8859-1”]
[contentType=”mimeType[;charset=characterSet]”|”text/html;charset=ISO-8859-1”]
import=”java.util.*”
%>
其中page指令各个属性的含义
Session:设定这个JSP页面是够需要HTTPSession。
autoFlush:当输出缓冲区即将溢出时,是否强行输出缓冲区的内容,设置为true是正常输出,设置为false,则会在buffer溢出时产生一个异常。
isThreadSafe属性用来指定该JSP文件是否支持多线程使用。如果设置为true,则表示该JSP文件支持多线程的使用,也就是表示该JSP文 件能够同时处理多个用户的请求;如果设置为false,则表示该JSP文件不支持多线程的使用,也就是表示该JSP文件只能一次处理一个用户的请求。 isThreadSafe属性的默认值为true。
isErrorPage:设置本JSP是否错误处理程序。如果该页面已是错误处理页面,通常无需指定errorPage属性。
errorPage:指定错误处理页面。如果本页面产生了异常或者错误,而该JSP页面没有对应的处理代码,则会自动调用该属性指定的JSP页面。
PageEncoding:指定生产网页的编码字符集。
contentType:用于设定生成网页文件的文件格式和编码字符集,即MIME类型和页面字符集类型,默认的MIME类型是text/html;默认的字符集类型是ISO-8859-1。具体的MIME类型可到Tomcat下conf路径下的web.xml中查询,例如<mine-mapping>
<extension>doc</extension>
<mine-type>application/msword</mine-type>
</mine-mapping>
这个就是用Word形式下载的MIME参数。
import:用于导入本页面中使用的类,如果没有导入这些类,则需在脚本中使用全限定名。可见,此处的import属性类似于Java程序中的import关键字的作用。
静态包含:<%@ include file="被包含页面"%>
动态包含:<jsp:include page="被包含页面" flush="true">
下面就仔细谈谈他们两个的区别
1. 静态包含会将包含的页面加入到本页面,融合成一个页面,因此没包含的页面甚至不需要是一个完整的页面,实际上包含页面在编译时将完全包含了被包含页面的代码。静态包含发生在[/b]JSP[/b]—>.java[/b]文件阶段,最后只有一个可执行的.class[/b]文件。[/b]需要指出的是,静态包含还会将包含页面的编译指令包含进来,如果两个页面冲突的话,页面就会出错。动态包含是在执行时,把web请求和响应对象传过去,对请求和相应对象进一步处理。动态包含发生在执行[/b]class[/b]文件阶段,动态加入,会生成一个或多个.class[/b]文件。[/b]
2. <%@ include file>是直接包含源代码,<jsp:include>包含请求的HTML代码,并且支持JSP表达式和Struts应用中的请求模式。
3. 通过<jsp:include>包含一个JSP页面,在包含的页面中相关的response操作都被忽略,也就是说当前操作不能通过response对象重定向到其他页面。如果用<%@include>包含的JSP页面,在该页面中所有的response操作都会正常运行。
4. <jsp:include>元素请求代码时,可以带参数,而<%@include>就不可以带参数。
5. 从执行速度角度上讲,<%@include>比<jsp:include>请求速度快,因为<%@include>仅处理一个请求,而<jsp:include>处理两个请求。
6. 从实际应用角度上讲,<%@include>用于检测用户是否登录、网站标识或网站的一些静态不变的信息;而<jsp:include>用于发送一个请求,并接收返回的HTML,并可以加入参数。
这些区别我认为是总结最全的了,先后总结了我所学的课件,李刚老师的著作,以及网上许多大神的博客。
本文出自 “惊鸿一瞥” 博客,请务必保留此出处http://zyxesc.blog.51cto.com/2659128/1124239
Page:该指令是针对当前页面的指令。
Include:用于指定包含另一个界面
Taglib:用于定义和访问自定义标签。
编译指令的格式:<%@ 编译指令名 属性名=”属性值” ···%>
page指令
page指令通常位于JSP页面的顶部,一个JSP页面可以有多条page指令,以下只列举常用的几个:<%@page
[session=”true|false”]
[autoFlush=” true|false”]
[isThreadSafe=” true|false”]
[isErrorPage=” true|false”]
[errorPage=”relativeURL”]
[pageEncoding=”ISO-8859-1”]
[contentType=”mimeType[;charset=characterSet]”|”text/html;charset=ISO-8859-1”]
import=”java.util.*”
%>
其中page指令各个属性的含义
Session:设定这个JSP页面是够需要HTTPSession。
autoFlush:当输出缓冲区即将溢出时,是否强行输出缓冲区的内容,设置为true是正常输出,设置为false,则会在buffer溢出时产生一个异常。
isThreadSafe属性用来指定该JSP文件是否支持多线程使用。如果设置为true,则表示该JSP文件支持多线程的使用,也就是表示该JSP文 件能够同时处理多个用户的请求;如果设置为false,则表示该JSP文件不支持多线程的使用,也就是表示该JSP文件只能一次处理一个用户的请求。 isThreadSafe属性的默认值为true。
isErrorPage:设置本JSP是否错误处理程序。如果该页面已是错误处理页面,通常无需指定errorPage属性。
errorPage:指定错误处理页面。如果本页面产生了异常或者错误,而该JSP页面没有对应的处理代码,则会自动调用该属性指定的JSP页面。
PageEncoding:指定生产网页的编码字符集。
contentType:用于设定生成网页文件的文件格式和编码字符集,即MIME类型和页面字符集类型,默认的MIME类型是text/html;默认的字符集类型是ISO-8859-1。具体的MIME类型可到Tomcat下conf路径下的web.xml中查询,例如<mine-mapping>
<extension>doc</extension>
<mine-type>application/msword</mine-type>
</mine-mapping>
这个就是用Word形式下载的MIME参数。
import:用于导入本页面中使用的类,如果没有导入这些类,则需在脚本中使用全限定名。可见,此处的import属性类似于Java程序中的import关键字的作用。
Include指令
使用include指令,可以讲一个外部文件嵌入到当前的JSP文件中。它分为动态包含和静态包含两种。格式如下:静态包含:<%@ include file="被包含页面"%>
动态包含:<jsp:include page="被包含页面" flush="true">
下面就仔细谈谈他们两个的区别
1. 静态包含会将包含的页面加入到本页面,融合成一个页面,因此没包含的页面甚至不需要是一个完整的页面,实际上包含页面在编译时将完全包含了被包含页面的代码。静态包含发生在[/b]JSP[/b]—>.java[/b]文件阶段,最后只有一个可执行的.class[/b]文件。[/b]需要指出的是,静态包含还会将包含页面的编译指令包含进来,如果两个页面冲突的话,页面就会出错。动态包含是在执行时,把web请求和响应对象传过去,对请求和相应对象进一步处理。动态包含发生在执行[/b]class[/b]文件阶段,动态加入,会生成一个或多个.class[/b]文件。[/b]
2. <%@ include file>是直接包含源代码,<jsp:include>包含请求的HTML代码,并且支持JSP表达式和Struts应用中的请求模式。
3. 通过<jsp:include>包含一个JSP页面,在包含的页面中相关的response操作都被忽略,也就是说当前操作不能通过response对象重定向到其他页面。如果用<%@include>包含的JSP页面,在该页面中所有的response操作都会正常运行。
4. <jsp:include>元素请求代码时,可以带参数,而<%@include>就不可以带参数。
5. 从执行速度角度上讲,<%@include>比<jsp:include>请求速度快,因为<%@include>仅处理一个请求,而<jsp:include>处理两个请求。
6. 从实际应用角度上讲,<%@include>用于检测用户是否登录、网站标识或网站的一些静态不变的信息;而<jsp:include>用于发送一个请求,并接收返回的HTML,并可以加入参数。
这些区别我认为是总结最全的了,先后总结了我所学的课件,李刚老师的著作,以及网上许多大神的博客。
本文出自 “惊鸿一瞥” 博客,请务必保留此出处http://zyxesc.blog.51cto.com/2659128/1124239
相关文章推荐
- jsp学习笔记_编译指令
- 学习笔记-轻量级Java EE:jsp的指令、动作、内置对象
- Java web重新梳理学习一(JSP的page编译指令)
- java EE之jsp脚本和3个编译指令 复习
- jsp学习笔记:语法Directive(编译指令,相当于执行期间的命令)
- JSP学习笔记(JSP的三个编译指令,七个动作指令和常用的内置对象)
- 四、JSP的3个编译指令
- JSP的三个编译指令
- 学习笔记之16-预处理指令2-条件编译
- jsp三个编译指令和七个动作指令
- JSP的3个编译指令,7个动作指令,9个内置对象
- jsp学习之jsp指令
- JSP四个作用域、JSP四个会话跟踪技术、JSP包含三个编译指令和七个动作指令、JSP九大内置对象
- JSP的三个编译指令-page,include详解
- JSP中的编译指令和动作指令的区别
- JAVA EE---JSP 学习第一天
- (九)包含指令 (JSP学习第二天)
- (十):跳转指令 (JSP学习第三天)
- JavaWeb从0开始学(二)-----JSP基本语法与编译指令
- jsp基础学习--jsp指令