现在的位置: 首页 > 综合 > 正文

Java EE学习之(四)JSP的编译指令

2013年12月03日 ⁄ 综合 ⁄ 共 2195字 ⁄ 字号 评论关闭

JSP的编译指令是通知JSP引擎的消息,他不直接生成输出。编译指令都有默认值,因此开发人员不用为每个指令都设置值。常见的编译指令有三个。

  • 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文件中。它分为动态包含和静态包含两种。格式如下:

静态包含:<%@ includefile="被包含页面"%>

动态包含:<jsp:includepage="被包含页面" flush="true">

下面就仔细谈谈他们两个的区别

1.        静态包含会将包含的页面加入到本页面,融合成一个页面,因此没包含的页面甚至不需要是一个完整的页面,实际上包含页面在编译时将完全包含了被包含页面的代码。静态包含发生在JSP—>.java文件阶段,最后只有一个可执行的.class文件。需要指出的是,静态包含还会将包含页面的编译指令包含进来,如果两个页面冲突的话,页面就会出错。动态包含是在执行时,把web请求和响应对象传过去,对请求和相应对象进一步处理。动态包含发生在执行class文件阶段,动态加入,会生成一个或多个.class文件。

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,并可以加入参数。

这些区别我认为是总结最全的了,先后总结了我所学的课件,李刚老师的著作,以及网上许多大神的博客。

抱歉!评论已关闭.