JSP有关技术详解七(Jsp基础语法-Jsp的三个编译指令)

JSP相关技术详解七(Jsp基础语法-Jsp的三个编译指令)
  JSP指令会被JSP引擎转换为相应的Java代码,但这些Java代码并不直接产生任何可见输出,而是告诉JSP引擎如何处理JSP页面,或是如何生成Servlet类。



       JSP指令的语法格式如下:

       <%@指令 属性名 = "值"%>

常见的编译指令有三个:
page:该指令是针对当前页面的指令。
include:用于指定包含另一个页面。
taglib:用于定义和访问自定义标签。

一、page指令

      通常page指令位于JSP页面的顶端,在同一个JSP页面中可以有多个page指令,但不能重复指定同样的page指令。



      page 指令中包含的属性:

      1)import

      语法:<%@page import="package.class|package.*,..."%>

      说明:类似于在java中导入包一样,如果JSP页面中用到一些类,需要使用page指令的import属性导入使用的类。import设置当前JSP页面中要用到的Java类,这些java类可能是JDK的类,也可能是自定义的类。在JSP页面中也默认加入"java.lang.*;"、"java.servlet.*"、"java.servlet.jsp.*;"、"java.servlet.http.*;"。

   

     2)session

      语法:<%page session = "true|false" %>

      说明:定义当前页面是否参与HTTP会话。当设置为true时,可以获得隐含的名session的对象,为false时,则不可以获得该对象。默认为true。



     3)contentType

      语法:<%page contentType = "mimeType[;charset=characterSet]"%>

      说明:使用contentType属性可以设置JSP页面应答的MIME类型,默认值为"text/html"。另外可以定义JSP页面的字符编码方式,默认值为ISO-8859-1,即英文文本。如果在JSP中使用中文,则可以定义字符编码方式为GBK。



     4)isThreadSafe(慎用)

      语法:<%page isThreadSafe = "true|false" %>

      说明:定义当前页面是否支持线程安全。若为true,则该页面可能同时收到JSP引擎发送的多个请求;反之,JSP引擎会对收到的请求进行排除,当前页面在同一时刻只处理一个请求。默认为true。



      5)info

      语法:<%page info = "some text" %>

      说明:info属性允许开发人员包含有关页面的文本信息,可以通过Servlet.getServletInfo()方法得到该字符串。



      6)language

      语法:<%page language = "java" %>

      说明:language属性定义JSP使用的脚本语言,JSP容器允许使用其他语言进行JSP开发,但这些语言需要满足JSP规范中定义的规则。默认为java。



     7)extends

      语法:<%page extends = "jsp base class" %>

      说明:extends属性用来指定生成的JSP Servlet的基类。默认为扩展JspBase类。

    

     8)buffer

      语法:<%page buffer = "8k" %>

      说明:buffer属性用来指定响应的缓冲模型。默认值为8k。若设置为none,则表示该JSP页面不使用缓冲,所有响应输出孝将被PrintWriter直接写到ServletResponse中。



     9)autoFlush

      语法:<%page autoFlush = "true|flase" %>

      说明:当输出缓冲区即将溢出时,是否需要强制输出缓冲区的内容,设置为TRUE时为正常输出;如设置为FALSE,则会在buffer溢出时产生一个异常。



     10)errorPage

      语法:<%page errorPage = "true|flase" %>

      说明:errorPage用来设定当JSP页面出现异常时,所要转身的页面。如果没有设定,则JSP容器会用默认的当前页面来显示出错信息。例如,<%@page errorPage="/error/error_page.jsp"%>



     11)isErrorPage

      语法:<%page isErrorPage = "true|flase" %>

      说明:isErrorPage指定当前页面是否是错误处理页面。默认值为false。若设定为true,则JSP容器会在当前页面中生成一个exception对象。


二,include指令
使用include指令,可以将一个外部文件嵌入到当前JSP文件中,同时解析这个页面中的JSP语句(如果有的话)。这是个静态的include语句,它会把目标页面的其他编译指令也包含进来,但动态include则不会。

include既可以包含静态的文本,也可以包含动态的JSP页面。静态的include编译指令会将被包含的页面加入本页面,融合成一个页面。

include编译指令的语法:

<%@include file="relativeURLSpec"%>
如果被嵌入的文件经常需要改变,建议使用<jsp:include>操作指令,因为它是动态的include语句。



三,taglib
使用的较少
taglib指令
taglib指令允许用户使用标签库自定义新的标签,它的语法格式如下:
<% taglib uri="taglibURI" prefix="tabPrefix"%>

taglib指令中的uri属性用于根据标签的前缀对自定义的标签进行唯一的命名,其值可以食相对路径,就对路径或标签库描述文件。属性prefix制定了标签的前缀。

示例:

<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>
说明:
tagPrefix:
自定义标签的前缀名。如果前缀为bean,那么在页面上使用的此标签库中任何标签标签应写为<bean:XXX>,这里XXX是标签名。

URIToTagLibrary:
标签库本身的URI。可以是以“/”开始的绝对路径名,“/”解释为Web应用的根。或者是一个充作TLD符号名的URL。这种情况下,名字必须通过web.xml文件中的<tablig>入口被映射到实际的TLD。